如何在基本href之后启动角度路由器而不更改资产地址

Posted

技术标签:

【中文标题】如何在基本href之后启动角度路由器而不更改资产地址【英文标题】:how to start angular router after base href without changing assets address 【发布时间】:2018-09-25 10:48:41 【问题描述】:

我有一个 Angular 应用程序我想从 /en/myapp/ URL 呈现我的应用程序我找到了一个带有基本 href 的解决方案我可以解决它,但是它引发了一个更大的问题它也改变了资产 URL,例如,/main.css更改为/en/myapp/main.css,我不希望这样,如果我将base href 设置为/ 角度路由器服务考虑/en/myapp 作为内部角度路由而不是渲染404 组件,那么如何启动我的角度应用程序在不改变资产文件 URL 的情况下形成特定的路由?

更新

我的服务器路由不固定它是这样的/en/:username 在这条路线中,我渲染了角度索引页面,所以我不能在 angular-cli 中使用 deploy-url 选项。

【问题讨论】:

【参考方案1】:

尝试使用--deploy-url 选项。

ng build --base-href /en/myapp --deploy-url /

【讨论】:

该解决方案的唯一问题是我的服务器路由实际上并没有固定它类似于 /en/:username 并且在此路由中,我呈现角度索引页面。对不起,我认为这应该在问题陈述中提及 那么您当前的解决方案是如何工作的?你如何改变基础href 我在 index.html 中动态更改它,例如 ‍‍‍‍‍‍ <base href="/" id="baseHref"> <script> (function () document.getElementById('baseHref').href = '/en/' + window.location.pathname.split('/')[2]; )(); </script> ``‍‍‍‍ 好的。您的项目仍然是 Angular cli 项目吗?如果是,可以只指定deploy-url吗? 是的,谢谢,但有一个问题它不会影响资产文件夹路径 /en/assets/images/ 并且一开始它有多余的 /en/

以上是关于如何在基本href之后启动角度路由器而不更改资产地址的主要内容,如果未能解决你的问题,请参考以下文章

Flutter iOS 应用程序大小增加而不更改资产/库

Backbone.js 路由而不更改 url

部署角度应用程序时如何避免路由更改?

锚点href vs 角度路由器链接

如何在运行时更改日志级别而不重新启动 Spring Boot 应用程序

Laravel 不使用 https 作为资产和动态路由