2012-05-14 3 views
6

Ho scaricato MVC4 e cercando di capire come la funzione di accorpamento lavora in un progetto standard. Sembrerebbe che avere il bundle:Perché doesnt il MVC4 bundling Knockout.js fascio?

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

porta tutti i file jquery.js ma non i file knockout.js indietro negli script inclusi. Perchè è questo? E anche quello che è il file _references.js e perché è il knockout.js File commentata?

risposta

8

Se si guarda nel file di progetto Global.asax, si dovrebbe trovare lì qualcosa di simile:

protected void Application_Start() 
{ 
    ... 
    BundleTable.Bundles.RegisterTemplateBundles(); 
} 

Ora il RegisterTemplateBundles sta registrando solo un sottoinsieme predefinito di script:

  • jquery- *
  • jquery.mobile *
  • jquery-ui *
  • jquery.unobtrusive *
  • jquery.validate *
  • MicrosoftAjax.js
  • MicrosoftMvc.js
  • Modernizr *
  • AjaxLogin.js

Se si desidera che alcuni file aggiuntivi si potrebbe o cambiare RegisterTemplateBundles-EnableDefaultBundles:

protected void Application_Start() 
{ 
    ... 
    BundleTable.Bundles.EnableDefaultBundles(); 
} 

o creare il proprio pacchetto personalizzato (si può leggere di più su bundling e minification here). Dovresti anche sapere che EnableDefaultBundles ha un impatto sulle prestazioni.

Il file _references.js viene utilizzato da Visual Studio per intellisense JavaScript. Si può imparare di più da seguente articolo:

2

tpeczek è corretta. La maggior parte delle persone non usa Knockout.js, ecco perché non è inclusa per impostazione predefinita. Bundling/Minification (BM) è notevolmente cambiata per RC e sarà molto più semplice per aggiungere i file a fasci. Vedere il mio Bundling and Minification tutorial

0

sono stato in grado di aggiungere un file al fascio con la seguente riga di codice aggiunto dopo il RegisterTemplateBundles()

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