Angular CLI ng serve with --base-href - 我不明白它的行为



我是Angular CLI的新手。我正在编写一个新应用程序,并在index.html中插入base href,例如 - <base href="/a/">.

当我使用 ng serve 并转到 localhost:4200/a(甚至localhost:4200(时,我会看到一个白屏,但是当我使用ng serve --base-href /a/时,我在 localhost:4200localhost: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 使用它来调整对其管理的资产的所有请求。

通常使用它来反向代理应用程序。