2012-06-13 18 views
6

Mam problem z requirejs. Może naprawdę nie rozumiem, jak to powinno działać, ale dla mnie wydaje się to całkiem nieproduktywne, że requirejs nie pozwala mi dzielić mojego kodu na różne niezależne skrypty. Ponieważ używam Play i jego języka szablonów do budowania struktury strony, próbowałem wstawić różne logiki javascript do różnych części składowych strony. Na przykład: Mam plik main.scala.html, który zawiera komponenty, których potrzebuje każda strona, łącznie z ich logiką js. Gdy inna strona wymaga paska nawigacji, wstawiam to razem z odpowiednią logiką. Mam więc plik main.js i navigation.js. Ponieważ są zależne od Jquery mobile, a nie od siebie nawzajem, chciałem załadować je za pomocą różnych tagów. Drugi skrypt nigdy się nie ładuje, więc moja intuicja polegała na tym, że requirejs wydaje się nie dopuszczać wielu głównych atrybutów danych na jednej stronie.Wiele skryptów z requirejs

Moje pytania brzmią: czy możliwe jest posiadanie wielu niezależnych skryptów na jednej stronie przy użyciu requirejs? A jeśli nie, dlaczego?

góry dzięki

+0

i moje pytanie brzmi: gdzie jest kod? – Joseph

Odpowiedz

3

Chodzi o to, że masz tylko jedno data-main atrybut, który ładuje main.js, następnie wewnątrz main.js można warunkowo załadować inne skrypty

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

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

Or czy źle zrozumiałem pytanie?

+0

Tak, to było moje pytanie. Po prostu nie wydaje mi się to zbyt praktyczne. Ale jeśli to jedyny sposób, aby to zrobić, pójdę po to. Dziękuję Ci bardzo. – Calardan

+1

Zgadzam się z @Calardanem ... sposób, w jaki opisałeś to rozwiązanie, główne potrzeby związane z każdym skryptem, który mógłbym potrzebować w całej witrynie ... to nie wydaje się być dobrym rozdzieleniem obaw. – Mir

0

data-main jest, gdy masz tylko jedną aplikację requirejs jedną stronę. Jeśli masz wiele, nie używaj danych-main. Jest to dość proste, to jest przykład przy użyciu main.js i navigation.js

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

Chociaż Uważam, Twoja strona musi navigation.js. Traktuj każdą stronę jako aplikację. Więc dane - tak jak zwykle, do twojego main.js.

A potem wewnątrz main.js:

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