2012-05-05 19 views
9

Me pregunto si hay una forma de pasar parámetros al requireJS con el parámetro main-data.Parámetros para main con requireJS y data-main

<script data-main="Main" src="lib/require/require.js"></script> 

puedo introducir variables globales:

<script> 
    var mainId = "Main"; 
    var mainTarget = "body"; 
</script> 
<script data-main="Main" src="lib/require/require.js"></script> 

pero me preguntaba si había una manera más clara para hacerlo. ¡Gracias!

EDIT:

Simon, esto es un gran plan de pienso para el valor mainTarget.

require([ 
    'plugins/load!./'+mainId+'.htm', 
    'plugins/load!./'+mainId+'.css' 
],function(html,css){ 
    var Main = function(){ 
     this.__proto__ = mainTarget; 
    } 
    new Main(); 
} 

¿Cómo puedo aplicar esto a mainId?

+0

posible duplicado de [Cómo cargar modelos bootstrap en Backbone.js durante el uso de AMD (require.js)] (http://stackoverflow.com/questions/9916073/how-to-load-bootstrapped-models-in-backbone-js-while-using-amd-require-js) –

Respuesta

15

Una forma de lograr esto es crear un módulo global o común y sólo lo utilizan como una dependencia:

global.js

define({ 
    foo: 'test', 
    bar: 'red' 
}); 

Utilizando el mundial:

require(['global'], function(global) { 
    console.log(global.foo) // 'test' 
}); 

Esto se basa en las propiedades globales del objeto que se mantienen dentro de un archivo JS. También es un patrón común para generar datos desde el lado del servidor en un objeto JS en la página HTML. Para hacer esto simplemente le das un nombre a tu módulo.

<head> 
    <script> 
     define('global', { 
      mainId: 'Main', 
      mainTarget: 'body' 
     }) 
    </script> 
</head> 

main.js

require(['global'], function(global) { 
    console.log(global.mainId) // 'Main' 
}); 

Si se define un módulo que necesita una propiedad global, acaba de establecer el módulo global como dependencia.

También puede utilizar la opción de configuración priority para asegurar que su módulo global se carga antes que nada - http://requirejs.org/docs/api.html#config

Cuestiones relacionadas