角路由脚本的获取和浏览器中的路由绑定在一起,这与Angulajs Webpack不同,可以使用publicpath

时间:2018-08-13 13:10:17

标签: angular angular-ui-router

我有一个ASP.NET MVC 5应用程序,我们正在将它引入。我们正在使用angular-cli来构建前端。我们从AngularJS开始,一切正常,但决定将其升级到angular6。除了延迟加载路由,其他所有功能都可以正常工作。问题在于浏览器中的路由与用于获取静态资源(例如,延迟加载的模块(未打包到main.js中))的路由绑定在一起。我们配置HashLocationStrategy是因为mvc应用程序中的路由太复杂了,无法用那里描述的任何解决方案来解决该服务器端(它们都在服务器端使用catch all“ {* url}”路由)。

我的情况是这样。使用如下所示的MVC路径浏览应用程序的角度部分:“ http://example.com/AngularApp/Myapp/Index”或类似的内容。但是,此应用程序是整个应用程序的动态部分,并已部署到MVC应用程序的AREAS文件夹中。因此,当我单击延迟加载的模块时,它将尝试从“ http://example.com/AngularApp/MyApp/Index/lazymodule.js”获取js文件。这样做是因为有基本标签。实际文件位于“ {http://example.com/areas/angularapp/scripts/lazymodule.js”。

如果我将基本标签url更改为areas文件夹,则会弄乱浏览器URL中的所有路由,并且我开始获得看起来像“ http://example.com/areas/angularapp/mymodule”的url,这会破坏常规MVC的各种情况应用程序代码。

我不希望这两件事联系在一起。在AngularJS中,我使用webpack中的publicPath设置解决了这个问题,一切正常。

有没有一种方法可以配置angular从一条路径中获取资源,但允许应用程序URL相对于应用程序的调用方式保持不变?

0 个答案:

没有答案