我是Angular CLI的新手。我正在编写一个新应用程序,并在index.html
中插入base href
,例如 - <base href="/a/">
.
当我使用 ng serve
并转到 localhost:4200/a
(甚至localhost:4200
(时,我会看到一个白屏,但是当我使用ng serve --base-href /a/
时,我在 localhost:4200
、localhost:4200/a
中看到我的应用程序,实际上在每个以 localhost:4200
开头的 url 中,例如 localhost:4200/aaaaaaa
.
我不理解这种行为。
从文档中我了解到这个标志只是改变了index html
中的base href
,但我的index.html
中已经有了这个基本 href,那么为什么我的应用程序不能只与localhost:4200/a
中的ng serve
一起使用?
为什么当我使用ng serve --base-href /a/
它不仅在localhost:4200/a
工作? 我错过了什么?我真的很困惑。
谢谢!
这些选项已更改,当前版本的 angular (13.3.9
( 和 cli ( 13.3.6
( 不再支持 --base-href
for ng serve
。
要在/a
路径下为您的网站提供服务,您应该使用ng serve --serve-path a
并告诉浏览器使用 /a/
作为基本路径,您需要在 angular.json 文件中更新此设置:
- 将
"baseHref": "/a/"
属性添加到architect
>build
>options
对象。
能够在/a
、/aaaaaaa
等下访问您的应用程序的问题可能与您的路由器配置有关。
如果您的路由器配置为解析以/a
开头的任何路由到组件/模块,则这是预期行为。
--base-href 选项的作用是更改 index.html 中的值。这反过来定义了文档的基本 URI,并用于文档中的所有相对 URL。在本例中,默认基 URI 是文档(索引.html(的位置。
另请注意,基本 href 在技术上也可以设置为绝对 URL。
还有 --deploy-url 选项,webpack 使用它来调整对其管理的资产的所有请求。
通常使用它来反向代理应用程序。