我已经下载了MVC4并试图弄清楚捆绑功能在标准项目中的工作原理.似乎有捆绑:
<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
返回所有jquery.js文件,但不包括所包含脚本中的knockout.js文件.为什么是这样?还有什么是_references.js文件,为什么knockout.js文件被注释掉了?
解决方法
如果你查看你的项目Global.asax文件,你应该找到这样的东西:
protected void Application_Start() { ... BundleTable.Bundles.RegisterTemplateBundles(); }
现在RegisterTemplateBundles只注册预定义的脚本子集:
> jquery- *
> jquery.mobile *
> jquery-ui *
> jquery.unobtrusive *
> jquery.validate *
> MicrosoftAjax.js
> MicrosoftMvc.js
> modernizr *
> AjaxLogin.js
如果您想要一些额外的文件,可以将RegisterTemplateBundles更改为EnableDefaultBundles:
protected void Application_Start() { ... BundleTable.Bundles.EnableDefaultBundles(); }
或者创建自己的自定义捆绑包(您可以阅读有关捆绑和缩小的更多信息here).您还应该知道EnableDefaultBundles会对性能产生一些影响.
_references.js文件由Visual Studio用于JavaScript智能感知.您可以从以下文章中了解更多信息:
> JavaScript Intellisense in VS11,The _references.js File