这可能是一个新手问题,但我在这里或角度文档中找不到任何答案。 假设我有一个简单的Angular应用程序(例如来自angular.io教程的hero editor),我想在不知道的情况下分发它将在我的网络服务器上运行的路径。它可以在:
换句话说,我需要生成的源(index.html及其角度关联的js文件)在任何路径下完全正常工作(我猜这就是为什么相对路径适用于.. 。)目前我生成的源仅在我将它们放在我的服务器的根目录时起作用,因为
<base href="/">
npm deploy已经在index.html中生成了......我天真地尝试将其更改为
<base href="./">
为了让我的浏览器将所包含的JS文件的路径解释为相对于index.html。有了这个,我的浏览器会正确地找到JS文件,但是角度应用程序不再有效(空白页面......) 任何想法应该是正确的“角度方式”这样做? 感谢您的帮助!
答案 0 :(得分:1)
如果您使用的是角度CLI,则:
Html.ActionLink("Link Text", "Index", "DisplayFields", new { Area =
"Adminstration" },null);
应该做的伎俩。
答案 1 :(得分:1)
也有--deploy-url
选项。两者可以一起使用,但它们有不同的用途。
据我所知,deploy-url
切换所做的就是将该URL附加到每个正在加载的资产上。例如:
ng build --aot --prod --base-href=/myapp/ --deploy-url=http://cdn.example.com/
产生这个:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>DEFENDER</title>
<base href="/myapp/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
<link rel="stylesheet" href="http://cdn.example.com/styles.7bb5a49e96a80c1bcc2e.css"></head>
<body>
<rr-root></rr-root>
<script type="text/javascript" src="http://cdn.example.com/runtime.e6ffc49faae27b0b8945.js"></script><script type="text/javascript" src="http://cdn.example.com/polyfills.9a5f6d04e0781d28c53e.js"></script><script type="text/javascript" src="http://cdn.example.com/main.03ca15166b3edeff4ad4.js"></script></body>
</html>
仍然不确定何时使用每个,但this guy发现使用它们一起工作: - )
注意:我不确定如何处理资产(例如图像)。我认为这只是主要的.js或样式文件,但是现在我只是为了测试目的而这样做。
答案 2 :(得分:0)
找到一个适合我的解决方案,看起来并不太丑:
ng build --base-href "./"
答案 3 :(得分:0)
您可以使用以下任何一种方法。
在域中部署到非根路径时,您将需要
手动更新dist / index.html中的<base href="/">
标签。
在这种情况下,您需要更新为
<base href="/angular2-test/">
,我相信。
ng build -prod --base-href \"/mysubfolder/\"
在我的服务器上工作,而index.html中的原始文档没有更改,可以继续开发。
您可以在此处查看结果:http://foobar.cf/calculator