2012-05-14 30 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"); 
後添加