ASP.NET MVC 中有个 BundleConfig 用于静态资源的打包和压缩,我在使用的过程当中遇到一些问题,如今作下总结,并给出具体的解决方案。javascript
// Styles. bundles.Add(new StyleBundle("~/bundles/styles/site.css").Include("~/static/styles/site.css")); // Scripts. bundles.Add(new ScriptBundle("~/bundles/scripts/index.js").Include("~/static/scripts/index.js"));
仔细看其中一条错误信息,说找不到 /bundles/images/bgi.jpg
,可是这个图片实际在 /static/images
中。很明显就能看出来:若是访问路径和真实路径不一致,则 JavaScript 和 CSS 中的相对路径所有会悲剧。css
因此解决方案有如下两种:java
第一种解决方案可行,但很难保证团队内成员不在 JavaScript 和 CSS 中使用相对路径,同时也增长团队内成员的开发压力,因此我采用的是第二种解决方案,但随之而来的是第二个问题:code
// Styles. bundles.Add(new StyleBundle("~/static/styles/site.css").Include("~/static/styles/site.css")); // Scripts. bundles.Add(new ScriptBundle("~/static/scripts/index.js").Include("~/static/scripts/index.js"));
文件路径一致,文件名称也一致,打包和压缩都失效。猜测多是访问到了真实的文件,将访问路径的文件名改了后又试了试,果真是这样。因此解决方案很简单:避免访问地址和真实地址一致便可。图片
贴一下修改后的代码:ip
// Styles. bundles.Add(new StyleBundle("~/static/styles/site").Include("~/static/styles/site.css")); // Scripts. bundles.Add(new ScriptBundle("~/static/scripts/index").Include("~/static/scripts/index.js"));