En una aplicación web en la que estoy trabajando, hay 3 tipos de scripts (lo mismo se aplica a las hojas de estilo):
- Los necesarios en cada página (por ejemplo, jquery)
- Los necesarios en varias páginas, pero no en todos (p. Ej., Una biblioteca lightbox utilizada en páginas que muestran imágenes cargadas por el usuario)
- Los necesarios en una sola página (por ejemplo, algo específico para la funcionalidad de esa página)
¿Debería cada página tener su propio paquete que agrupa todos los scripts que necesita? ¿O debería cada tipo de script ser su propio paquete (es decir, una página podría cargar 3 paquetes: essentialScripts.js, mediaLibraries.js y pageSpecificScripts.js)? ¿O hay un mejor enfoque que desconozco?
¿Cuál es la mejor práctica para agrupar estos scripts y qué ventajas / desventajas existen para los diferentes enfoques?
(No estoy seguro de cuán relevante será esto, pero el proyecto en el que estoy trabajando está usando la agrupación ASP.NET MVC. Además, para simplificar las cosas, supongamos que ninguno de los archivos procederá de un CDN de terceros, por lo que todos se cargan desde el mismo lugar y el cliente no tendrá que visitar otros sitios).
Respuestas:
Para aplicaciones complejas, tiene sentido hacer la división que sugirió. Sus bits comunes, especialmente las bibliotecas externas, cambiarán con mucha menos frecuencia que el código de la aplicación. Por lo tanto, son los principales candidatos para el almacenamiento en caché. Agrupar todo junto evita eso. Por otro lado, agregan solicitudes HTTP adicionales. Lo que haría que la experiencia inicial fuera un poco menos agradable. Un patrón común es tener bibliotecas externas en un paquete y código de aplicación en otro. Especialmente cuando este último es más pequeño y hay mucho intercambio entre páginas y vistas, tiene sentido.
Sin embargo, este es un objetivo en movimiento. Las mejores prácticas de hoy son los antipatrones del mañana. El consejo cambia en un mundo donde http / 2 es común, o cuando los módulos del lado del cliente son compatibles con todos los principales navegadores.
fuente