2008-11-18 25 views
8

Estoy celoso de los chicos de rieles. Se puede hacer esto:Cómo incluir varios archivos Javascript en .NET (como lo hacen en los rieles)

<%= javascript_include_tag "all_min" %> 

... y yo estoy atascado hacer esto:

<script src="/public/javascript/jquery/jquery.js" type="text/javascript"></script> 
<script src="/public/javascript/jquery/jquery.tablesorter.js" type="text/javascript"></script> 
<script src="/public/javascript/jquery/jquery.tablehover.pack.js" type="text/javascript"></script> 
<script src="/public/javascript/jquery/jquery.validate.js" type="text/javascript"></script> 
<script src="/public/javascript/jquery/jquery.form.js" type="text/javascript"></script> 
<script src="/public/javascript/jquery/application.js" type="text/javascript"></script> 

¿Hay bibliotecas para comprimir, gzip y combinar múltiples archivos js? ¿Qué hay de los archivos CSS?

Respuesta

1

Puede hacerlo utilizando un controlador HTTP. Echa un vistazo a esta entrada del blog de Mads Kristensen:

Combine multiple stylesheets at runtime

+0

Parece una exageración cuando todo apunta a simplificar las cosas. Por otro lado, supongo que solo tiene que escribir el manejador una vez y puede trasladarlo de un sitio a otro. –

+0

Eso es completamente diferente a la pregunta de OP. El artículo habla sobre la combinación de varias solicitudes en una sola en tiempo de ejecución, pero aún así debe enumerarlas por separado. –

8

Usted puede utilizar un control ScriptManager/ScriptManagerProxy y definir las secuencias de comandos en el CompositeScript sección/propiedad. Ver MSDN reference.

<asp:ScriptManager runat="server"> 
    <CompositeScript> 
     <Scripts> 
      <asp:ScriptReference Path="~/public/javascript/jquery/jquery.js" /> 
      <asp:ScriptReference Path="~/public/javascript/jquery/jquery.tablesorter.js" /> 
      <asp:ScriptReference Path="~/public/javascript/jquery/jquery.tablehover.pack.js" /> 
      <asp:ScriptReference Path="~/public/javascript/jquery/jquery.validate.js" /> 
      <asp:ScriptReference Path="~/public/javascript/jquery/jquery.form.js" /> 
      <asp:ScriptReference Path="~/public/javascript/jquery/application.js" /> 
     </Scripts> 
    </CompositeScript> 
</asp:ScriptManager> 

No limpia necesariamente las marcas, pero las comprime juntas.

3
<%= javascript_include_tag "all_min" %> 

Eso realmente tiene toda la semántica de una llamada a la función ASP clásica, incluso si es realmente rubí. De hecho, al no conocer ningún rubí, puedo estar bastante seguro con la suposición de que es solo una función y "all_min" se refiere al nombre de una carpeta que se pasa como argumento.

Desde los <%= %> picaduras de abejas son sólo un atajo para Response.Write en ASP clásico, podemos concluir que usted debe ser capaz de construir su propia función que básicamente hace lo mismo y devuelve una cadena con incluye la correspondiente .

+0

Tiene razón, en Ruby no necesita paréntesis para pasarle un valor a una función. –

+0

Debe asegurarse de que los scripts estén correctamente ordenados, ¿no? – labilbe

+1

@labilbe: supongo que en ese caso usted ha seguido una convención de nomenclatura para asegurarse de que sean recogidos en el orden correcto. Dudo que la función Ruby sea lo suficientemente inteligente como para verificar las dependencias tampoco. –

1

ScriptManager está bajo licenece BSD y esto me gusta :(Usted puede ver una muy buena alternativa de cómo esto se implementa en el enfoque de KiGG:. KiGG

La idea subyacente es que el control le permite unirse a los js archivos de la configuración web separándolos en categorías (alista sus nombres) bastante simple yaeh. buena suerte.

0

Muchas soluciones hacen esto con un controlador http que crea dinámicamente un archivo triturado js o css por página. no es una buena idea. Es mejor destruir los archivos js y css de todos los sitios en un solo archivo y, en lugar de eso, publicarlos. De esta forma, el navegador lo carga una vez y se almacena en caché. ts solo carga desde el caché. Los archivos js y css aplastados dinámicamente crean un archivo por página. Por lo tanto, es posible que vuelva a servir los mismos archivos css y js para cada página.

Puede dejar que el servidor web sirva al archivo css/js triturado. La mayoría del servidor web. IIS implementa el almacenamiento en caché en modo kernel, que es la manera más rápida de servir cualquier archivo estático.

Si quieres un performant soluciones escalables, que trabaja en granjas web check out:

http://code.google.com/p/talifun-web/wiki/CrusherModule

-3

Eso es un método de ayuda en los carriles.

haciéndolo pasar: todos incluirán las librerías de prototipo predeterminadas.

ASP.net MVC intentó copiar los rieles, pero nunca se puede obtener el astento interno correctamente.

Mi consejo:

En lugar de copiar todo lo bueno de código abierto sólo tiene que utilizar las cosas reales, es decir carriles

4

Combres qué agrupación, control de versiones, minimización y almacenamiento en caché de JavaScript y CSS recursos. Es muy configurable y eficiente.

0

Recientemente encontré esta herramienta SquishIt.

Grz, Kris.

Cuestiones relacionadas