2012-05-14 31 views
6

我已经下载了MVC4并试图解决捆绑功能如何在标准项目中工作。这似乎是具有捆绑:为什么不打包MVC4捆绑包Knockout.js?

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

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

回答

8

如果你看看你的项目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有一些性能影响。

Visual Studio for JavaScript intellisense使用_references.js文件。你可以学到以下文章:

2

tpeczek是正确的。大多数人不使用Knockout.js,这就是默认情况下不包含的原因。捆绑/缩小(BM)对于RC来说已经发生了很大的变化,将文件添加到捆绑包会更加简单。见我Bundling and Minification tutorial

0

我能够将文件添加到包用下面的代码行RegisterTemplateBundles()

BundleTable.Bundles.RegisterTemplateBundles(); 
BundleTable.Bundles.Where(x => x.Path == "~/Scripts/js").First().AddFile("~/scripts/knockout-2.0.0.js"); 
后添加