require.js es una buena opción, pero hay 2 puntos a notar:
- Require.js es una solución por el lado del cliente.Más exactamente, se encarga de que si una función necesita x módulos, que esos x módulos se carguen, si no lo estaban ya.
Esto puede ser suficiente en tu caso, no lo sé.A mí me ha resultado útil (usado con dojo toolkit), en sistemas con muchísimo js (sistemas de backoffice, en single-page).En estos sistemas, el tiempo de carga no es esencial, es más importante mantener el desarrollo js controlado (son cientos de ficheros js).
Si el tiempo de carga es esencial, una de las cosas que echo de menos en require.js es la paralelización de carga (descargando js de varios subdominios a la vez), y una cosa importante: cuando se llama a require(), los scripts necesarios se descargarán.
Esto puede parecer algo "bueno", pero no tiene por qué serlo.Por ejemplo:
Código Javascript
:
Ver originalrequire(['module'], function(module){
module.funct();
});
Lo que significa eso es: descargate el módulo, si es necesario, y ejecuta la funcion.
Sin embargo, esto:
Código Javascript
:
Ver originalApp.get("module").then( function(module){
module.funct();
});
Para mí, significa : cuando la política de carga de la página, haya cargado el módulo "module", ejecuta la función.Es decir, el módulo no se descarga instantáneamente.
El porqué, es por mantener bajo control qué se carga cuando.Hay una política de carga de javascripts (prioridades, especificadas en la configuración de dependencias de la página).
Supón que tú quieres que el módulo GoogleAnalytics tenga una alta prioridad.Al principio, todo va bien.Pero poco a poco se van añadiendo scripts.Incluso si se hace con require.js, algunos de esos scripts acaban apareciendo antes de la llamada a Analytics.Y poco a poco la llamada a Analytics se va retrasando.Si la política de carga está definida (es un simple objeto json), los módulos se cargarán cuando esa política especifique, no simplemente según su posición en la página html.
Es decir, mientras require.js es "estas son las dependencias necesarias para la función, y si no están, las cargo", la versión que uso, sólo dice "estas son las dependencias necesarias", pero cuándo se cargan, depende de la política global.
De esta forma, tienes un control muy grande sobre los tiempos de carga.
Por otro lado, require.js no resuelve aspectos de la carga como los css, minificados/combinados, etc. Esas son cosas a resolver en tiempo de deployment.
Asi que, require.js *puede* ser una muy buena opción, dependiendo del tipo de web.Pero no resuelve todo el problema.