这里的答案并不完全准确、过时,也没有给出完整的解释.
我应该什么时候使用每一个?
tl;dr一般使用--base-href
,因为--deploy-url
- 从v13开始就不推荐使用
- 将降低构建速度(虽然可能不会太大)
- 没有百分之一百零一的好处
如果您需要URL与放置assets资源 的位置不同,official documentation建议手动设置APP_BASE_HREF
(不同的是,如果您将在https://example.com/public/提供Angular 文件,但希望web应用的URL为https://example.com/users/,则将--base-href
设置为/public/
,将APP_BASED_HREF
设置为/users/
)
angular cli工具的--base-href
个参数和--deploy-url
个参数之间有什么区别?
上面我已经列出了三个不同之处.
正如您在问题中所述,--base-href
在index.html
中设置<base href>
(有关详细信息,请参阅Mozilla docs;有关含义,请参阅community wiki),而--deploy-url
将为index.html
文件中的相对链接添加前缀.
例如,以下index.html
个片段:
<link rel="stylesheet" href="styles.HASH.css">
...
<script src="main.HASH.js" type="module"></script>
对于--deploy-url /public/
,将输出为:
<link rel="stylesheet" href="/public/styles.HASH.css">
...
<script src="/public/main.HASH.js" type="module"></script>
--deploy-url
似乎只是在链接前面加上前缀,所以如果你改为--deploy-url public
,输出将几乎无法使用:
<link rel="stylesheet" href="publicstyles.HASH.css">
...
<script src="publicmain.HASH.js" type="module"></script>
最后,如果您的模板(HTML)使用指向资源的相对链接,例如包含<img src="assets/logo.jpg">
的header.component.html
,但您使用的是--deploy-url /public/
,则该链接将不带前缀,并且会显示损坏的图像.相反,如果使用--base-href /public/
设置<base href="/public/">
,则这将起作用.