2012-05-14 11 views
6

He descargado MVC4 e intento averiguar cómo funciona la función de agrupamiento en un proyecto estándar. Parecería que tener el paquete:¿Por qué el paquete de agrupación MVC4 Knockout.js?

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

trae todos los archivos jquery.js pero no los archivos knockout.js en los scripts incluidos. ¿Por qué es esto? ¿Y también sobre qué es el archivo _references.js y por qué se comenta el archivo knockout.js?

Respuesta

8

Si nos fijamos en el archivo de proyecto Global.asax, usted debe encontrar que hay algo como esto:

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

Ahora el RegisterTemplateBundles está registrando sólo un subconjunto predefinido de secuencias de comandos:

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

Si quieres algunos archivos adicionales que bien podría cambiar RegisterTemplateBundles-EnableDefaultBundles:

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

O cree su propio paquete personalizado (puede leer más sobre la agrupación y minificación here). También debe saber que EnableDefaultBundles tiene algún impacto en el rendimiento.

El archivo _references.js es utilizado por Visual Studio para JavaScript intellisense. Puede aprender más de la siguiente artículo:

2

tpeczek es correcta. La mayoría de las personas no usan Knockout.js, es por eso que no está incluido por defecto. Bundling/Minification (BM) ha cambiado considerablemente para RC y será mucho más simple agregar archivos a los paquetes. Véase mi Bundling and Minification tutorial

0

yo era capaz de añadir un archivo al paquete con la siguiente línea de código añadido después de la RegisterTemplateBundles()

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