在Angular 5中使用Webpack从CDN加载JS文件

时间:2018-03-19 12:46:22

标签: javascript angular webpack build cdn

我在我的一个项目中使用Angular 5 + Webpack。现在我想从CDN加载包含JS文件(包括延迟加载的[System.Web.Http.HttpPost] public System.Web.Http.IHttpActionResult Post([System.Web.Http.FromBody] CallBackFormModel CallBackFormModel) { // your previous code goes here return Json(new { result = "ok" }, JsonRequestBehavior.AllowGet); } 文件)的所有资产。

对于CSS和图像,我更改了.chunks.js的{​​{1}}选项,因此我可以从CDN加载CSS和图像,但问题在于JS文件。

对于JS文件,我更改了publicPath,但它给了我这个错误

enter image description here

我也尝试使用webpack重命名JS文件,但这个技巧也没有用。

我只是想知道自己是朝着正确的方向前进,还是应该以不同的方式思考。

感谢。

1 个答案:

答案 0 :(得分:0)

我认为“在进行树震动时使用CDN”讨论可能是一个相当复杂的讨论......

这个答案假定只有在切换到CDN时才会发生中断,否则你的应用程序会得到正确的服务。您确定要投放您的应用吗?

历史API由angular使用,但由于原点不同,因此将其视为安全问题。

假设CDN中的外部可缓存库应该包含在捆绑中,您可以尝试下面列出的几个选项。我会先重新考虑这个假设。 webpack的重点是树木然后捆绑,所以我确信你已经确信捆绑已经缓存并捆绑在CDN上的文件的好处。

如果您确定要采用这种方法,可以做一些事情。您可以在角度路由器上使用hashlocationstrategy:

imports [
RouterModule.forRoot(routes, {useHash: true})
]

或者,您可以在构建应用时使用节点的http服务器完全托管您的应用,并在应用的index.html中使用主机baseUrl。

最后,如果这些都不适合你,你可以尝试使用htaccess文件,或做一些手动路由,但我发现这些方法有点脆弱。

有一些关于SO的预先存在的问题可以解决这个问题,但我认为CDN的皱纹需要一个新的回应。

Angular 5 : Failed to execute 'replaceState' on 'History': A history state object with URL cannot be created in a document with origin 'null'

ng build failed to execute 'replaceState' on 'History': A history state object with URL cannot be created in a document with origin 'null' and URL

How to perform redirects in NodeJS like a .htaccess file?

也许更好的答案是问这个问题:如果您的图书馆永远不会改变,并且您的应用程序版本更新,为什么要强迫您的用户重新下载您的图书馆?