为什么MVC4捆绑捆绑Knockout.js?

Exi*_*tos 6 asp.net-mvc asp.net-mvc-4 asp.net-optimization

我已经下载了MVC4并试图弄清楚捆绑功能在标准项目中的工作原理.似乎有捆绑:

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Scripts/js")"></script>
Run Code Online (Sandbox Code Playgroud)

返回所有jquery.js文件,但不包括所包含脚本中的knockout.js文件.为什么是这样?还有什么是_references.js文件,为什么knockout.js文件被注释掉了?

tpe*_*zek 8

如果您查看项目Global.asax文件,您应该找到类似这样的内容:

protected void Application_Start()
{
    ...
    BundleTable.Bundles.RegisterTemplateBundles();
}
Run Code Online (Sandbox Code Playgroud)

现在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();
}
Run Code Online (Sandbox Code Playgroud)

或者创建自己的自定义捆绑包(您可以在此处阅读有关捆绑和缩小的更多信息).您还应该知道这EnableDefaultBundles会对性能产生一些影响.

_references.js文件由Visual Studio用于JavaScript智能感知.您可以从以下文章中了解更多信息: