Estoy escribiendo algunas pruebas para una aplicación que utiliza RequireJS. Debido a cómo funciona la aplicación, espera obtener algunas clases llamando al require
. Entonces, para las pruebas, tengo algunas clases ficticias, pero no quiero tener que ponerlas en archivos individuales solo para esta prueba. Me gustaría mucho prefieren simplemente define()
manualmente dentro de mi archivo de prueba de este modo:Definir módulos y usarlos inmediatamente con RequireJS
define('test/foo', function() {
return "foo";
});
define('test/bar', function() {
return "bar";
});
test("...", function() {
MyApp.load("test/foo"); // <-- internally, it calls require('test/foo')
});
El problema aquí es que la evaluación de estos módulos se retrasa hasta que se dispara un evento onload de la escritura.
De require.js around line 1600:
//Always save off evaluating the def call until the script onload handler. //This allows multiple modules to be in a file without prematurely //tracing dependencies, and allows for anonymous module support, //where the module name is not known until the script onload event //occurs. If no context, use the global queue, and get it processed //in the onscript load callback. (context ? context.defQueue : globalDefQueue).push([name, deps, callback]);
¿Hay alguna manera de que pueda activar manualmente la cola para ser evaluados?
Puede agregar más de un módulo por archivo (considere al optimizar + Minify toda su aplicación), sólo hay que déle a cada módulo un nombre específico (vea el primer argumento de cadena para cada función 'define' en el OP). – nickf
Además, los módulos son solo para probar y son ** muy ** básicos. Un poco más complicado que en el ejemplo anterior, pero no mucho. Tener cada uno en su propio archivo sería demasiado complicado. – nickf
seguro, lo entiendo. pero por lo que puedo decir de los documentos, el único caso en el que tiene un solo archivo con múltiples módulos es después de que ocurre el paso de optimización/compilación. para ser sincero, no estoy tan familiarizado con requirejs, pero lo he usado en un par de proyectos. los documentos son bastante claros: 'Solo debe haber * una * definición de módulo por archivo en el disco. Los módulos se pueden agrupar en paquetes optimizados mediante la herramienta de optimización. Empezaría ahí :) – keeganwatkins