2012-06-13 22 views
6

Tengo un problema con requirejs. Tal vez realmente no entiendo cómo debería funcionar, pero para mí parece bastante contraproducente que requirejs no me permita dividir mi código en diferentes guiones independientes. Dado que estoy usando Play y su lenguaje de plantilla para construir la estructura de la página, traté de insertar diferentes lógica de JavaScript en diferentes partes de la página en cuanto a componentes. Por ejemplo: tengo un main.scala.html que contiene los componentes que cada página necesita, junto con su lógica js. Cuando otra página necesita una barra de navegación, la inserto junto con la lógica correspondiente. Así que tengo un main.js y un navigation.js. Como solo dependen del móvil de Jquery y no entre sí, quería cargarlos con diferentes etiquetas. El segundo guión nunca se carga, así que mi intuición fue que requirejs parece no permitir múltiples atributos principales de datos en una página.Varios guiones con requirejs

Así que mi pregunta es: ¿es posible tener múltiples scripts independientes en una página usando requirejs? Y si no, ¿por qué?

Gracias de antemano

+0

y mi pregunta es: ¿dónde está el código? – Joseph

Respuesta

3

La idea es que sólo tiene un data-main atributo que carga el main.js, a continuación, en el interior main.js puede cargar condicionalmente otros scripts

if (something) { 
    require(["this"], function(this) { ... }); 
} else { 
    require(["that"], function(that) { ... }); 
} 

Ver: http://requirejs.org/docs/start.html

O ¿He entendido mal la pregunta?

+0

Sí, esa era mi pregunta. Simplemente no parece ser muy práctico para mí. Pero si esa es la única manera de hacerlo, lo intentaré. Muchas gracias. – Calardan

+1

Estoy de acuerdo con @Calardan ... la forma en que describió esta solución, las necesidades principales de saber sobre cada script que podría necesitar en todo el sitio ... eso no parece una buena separación de preocupaciones. – Mir

0

data-main es para cuando solo tiene una aplicación requirejs en su página. Si tiene múltiples, no use data-main. Es muy sencillo, aquí hay un ejemplo usando sus main.js y navigation.js

<script src='require.js'></script> 
<script> 
    require(['main']); 
    require(['navigation']); 
</script> 

Aunque yo diría que su página no navigation.js necesita. Trate cada página como una aplicación. Así que la información principal es normal en tu main.js.

y luego dentro main.js:

// start independent load of navigation.js 
require(['navigation']); 
// load modules required for main 
require(['moduleA', 'moduleB'], function(moduleA, moduleB){ 
    // inside main.js 
});