Parte del problema con la concatenación del archivo no es el tiempo de descarga, sino el tiempo dedicado a la compilación en cada página.
Si tiene un archivo de 20,000 líneas, y solo necesita 600 de esas líneas para poner todo en funcionamiento (asumiendo que todo está escrito para ser modular y asincrónico, usando cualquier patrón para administrar los recursos) , entonces usted se ahorrará lo que podría ser medio segundo o más, si sirve el programa principal y se extiende según sea necesario (o en un temporizador retrasado, sirviendo porciones grandes de funcionalidad que están estrechamente relacionadas entre sí).
El tiempo total dedicado a la descarga es mayor.
El número total de conexiones HTTP utilizadas es mayor.
Pero el tiempo requerido para hacer que la página sea visible para el usuario es menor.
El tiempo requerido para agregar funcionalidad básica a la página es menor.
Luego se puede transmitir una funcionalidad adicional, ya sea después de la carga e inicialización, o justo a tiempo, según lo solicitado por el usuario, y en ambos casos, siempre que el código que ha transmitido esté enfocado en hacer una cosa, y no es una media docena de otras dependencias, el tiempo entre la solicitud y la adición de la funcionalidad será mínimo.
RequireJS utiliza un sistema de promesa, básicamente.
Le permite declarar las dependencias por adelantado, y entregar el código (como una devolución de llamada) para ser implementado, después de que se hayan manejado todas sus dependencias.
Si esas dependencias tienen alguna dependencia, entonces ellos no se inicializarán hasta que se carguen sus dependencias.
Si solo quiere que se cargue y el orden no es importante, entonces no necesita darle dependencias.
La moraleja general es que si tienes un sistema donde todos tus archivos son pequeños, el peso total de JS en la página es muy pequeño, solo necesitas unos cientos de líneas para hacer todo lo que deseas en el página ... ... además, ya sabes dónde están todas tus dependencias, tienes un sistema en el servidor para asegurarte de que están en el orden correcto, etcétera (además de que tienes una gran documentación, o estás eres el único que toca este código, y vives dentro de él, día a día) ... ... entonces no hay nada malo en hacer lo que estás haciendo.
Es posible que no vea ninguna diferencia, si el tiempo de compilación se ve superado por la cantidad de solicitudes HTTP que realiza. Pero para aplicaciones generales que tienen decenas (o cientos) de miles de líneas de longitud, donde solo se necesita una fracción de esa funcionalidad en una página, puede haber grandes ahorros en términos de tiempo percibido entre cuando carga la página y cuándo la aplicación está "lista" para la interacción básica del usuario.
¿Sigue siendo así? –
@JitendraVyas - Sí, es casi todo cierto. Los navegadores ahora tienen los atributos 'defer' y' async' para la etiqueta del script (sobre la que puedes leer [aquí] (http://stackoverflow.com/questions/10808109/script-tag-async-defer/10808243#10808243)) que le dan cierto control sobre el tiempo de una simple etiqueta de script sin usar un cargador, pero todavía hay casos para todos los anteriores que usan un cargador. – jfriend00