2012-03-27 14 views
5

Quizás me olvidé de esto en la documentación en algún lugar, pero aquí va. Tengo un controlador central que se encarga de administrar los módulos. Tengo hasta ahora 20 módulos y me gustaría poder configurarlos fácilmente para que los cargue el núcleo. Esto significa que tengo una gran variedad o muchas llamadas para requerir. ¿Es aceptable/una buena práctica crear una lista de módulos en un objeto literal y luego tener un módulo cargando sus dependencias? He aquí un ejemplo de lo que quiero decir:RequireJS - Gestión de módulos centralmente

Config.js

modules = [ 
    'moduleA', 
    'moduleB', 
    'moduleC' 
]; 

Core.js

define(
    ['config'], 
    function(config) { 
     // Somewhere in here I parse the list and require() each one ? 
     return { 
      startAll : function() { 
       console.log('starting all modules.'); 

       // Then call a method common to all 'modules' in the list above. 
      } 
     } 
    }; 
    } 
); 

No estoy seguro si esto es una buena idea, como soy nuevo RequireJS, pero me gusta la idea de poder configurar qué módulos se cargan desde un solo lugar. En mi caso, por módulo, me refiero a los widgets de UI que he escrito más específicamente.

Respuesta

3

He resuelto el mismo problema mediante el uso de un patrón de "paquete" de géneros. Básicamente, el paquete actúa como una fachada para mis widgets. Para darle una mejor idea de lo que estoy hablando, considere esto:

widgets.js:

define(['./widgets/button', ...], function(button) { 
    return { 
     button: button, // expose the widgets here 
     ... 
    } 
}); 

En este caso, el módulo de botones sólo devuelve una función. Es posible que necesite ajustar la fachada para que se ajuste a su caso.

Este esquema hace posible hacer referencia a los widgets simplemente importando la fachada. En mi caso esto fue altamente beneficioso. Utilizo la misma idea en otros lugares para envolver los módulos y hacerlos más fáciles de usar.

Sin embargo, perderá algunos de los beneficios de RequireJS al hacerlo. Esto cargará todos los widgets en cualquier caso, incluso si no necesita alguno en este momento. Por supuesto, en ese caso, puede actualizar la fachada, pero es trabajo extra ...

+0

Veo lo que está diciendo. Básicamente, crea una lista de las dependencias cargadas y la carga en otro módulo. Eso es genial. – backdesk

+0

Sí. No sé si esto funciona para tu caso. Aunque lo encontré bastante útil. –

Cuestiones relacionadas