如何规范化 Angular 应用中的 URL,以便在应用为 "self hosted" 或 "integrated" 时正确解析
How to normalize URL's in an Angular app to resolve correctly when the app is "self hosted" or "integrated"
在这个问题中,"integrated" 指的是从另一个 Web 应用程序中的某个路径调用的 angular 应用程序,而 "self hosted" 指的是来自工具的 运行,例如VS Code 使用 ng serve --open
命令,其中根 url 设置为 src 文件夹。
在 MVC 中,有诸如 Url.Action()
和 Url.Conntent()
之类的指令,可用于规范化应用程序内任何位置的相对路径。
我一直在阅读有关 APP_BASE_REF 的内容,但是,我认为这行不通。是否可以使用一种机制来允许类似于 --> <img ng-fromAppRoot('~/assets/my.png')>
的构造。
此外,在 css 中,诸如 background:url("~/assets/my.png")
的构造将在 "integrated" 中起作用,但在 "self hosted" 和 vice/versa 中不起作用。
当 "Integerated" 可能是解决方案的一部分时,将根 url 作为应用初始化程序的一部分传入。
这通常是如何处理的,我正在寻找一种无需更改代码即可在 debug/release 之间切换的解决方案?
如果您不关心漂亮的 URL,您可以使用 HashLocationStrategy
(docs) 并一起删除基础 url。只需使用指向您资产的相对链接,例如 <img src="assets/logo.svg">
.
如果您需要漂亮的 URL,那么您应该制作自己的函数,其工作方式与您所描述的 Url.Action()
和 Url.Content()
类似。
在这个问题中,"integrated" 指的是从另一个 Web 应用程序中的某个路径调用的 angular 应用程序,而 "self hosted" 指的是来自工具的 运行,例如VS Code 使用 ng serve --open
命令,其中根 url 设置为 src 文件夹。
在 MVC 中,有诸如 Url.Action()
和 Url.Conntent()
之类的指令,可用于规范化应用程序内任何位置的相对路径。
我一直在阅读有关 APP_BASE_REF 的内容,但是,我认为这行不通。是否可以使用一种机制来允许类似于 --> <img ng-fromAppRoot('~/assets/my.png')>
的构造。
此外,在 css 中,诸如 background:url("~/assets/my.png")
的构造将在 "integrated" 中起作用,但在 "self hosted" 和 vice/versa 中不起作用。
当 "Integerated" 可能是解决方案的一部分时,将根 url 作为应用初始化程序的一部分传入。
这通常是如何处理的,我正在寻找一种无需更改代码即可在 debug/release 之间切换的解决方案?
如果您不关心漂亮的 URL,您可以使用 HashLocationStrategy
(docs) 并一起删除基础 url。只需使用指向您资产的相对链接,例如 <img src="assets/logo.svg">
.
如果您需要漂亮的 URL,那么您应该制作自己的函数,其工作方式与您所描述的 Url.Action()
和 Url.Content()
类似。