2012-06-13 50 views
6

我有一個requirejs的問題。也許我真的不知道它應該如何工作,但對我來說,requirejs不允許我將我的代碼拆分爲不同的獨立腳本,這似乎相當反作用。 由於我使用Play及其模板語言來構建頁面結構,因此我嘗試在組件明智的頁面的不同部分插入不同的JavaScript邏輯。例如:我有一個main.scala.html,其中包含每個頁面需要的組件,以及它們的js邏輯。當另一個頁面需要導航欄時,我將其與相應的邏輯一起插入。所以我有一個main.js和一個navigation.js。由於他們只依賴Jquery mobile而不是彼此,我想用不同的標籤加載它們。第二個腳本永遠不會被加載,所以我的直覺是requirejs似乎不允許在一個頁面上使用多個數據主屬性。與requirejs的多個腳本

所以我的問題是:是否有可能在一個頁面中使用requirejs有多個獨立的腳本?如果不是,爲什麼?

在此先感謝

+0

和我的問題是:哪裏是你的代碼? – Joseph

回答

3

的想法是,你只有一個data-main的屬性,加載main.js,那裏面main.js可以有條件地加載其他腳本

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

參見:http://requirejs.org/docs/start.html

或者我誤解了這個問題嗎?

+0

是的,那是我的問題。 這對我來說似乎不太實際。 但是,如果這是做到這一點的唯一方法,我會努力的。非常感謝你。 – Calardan

+1

我同意@Calardan ......你描述這個解決方案的方式,主要需要了解我可能需要在整個站點中使用的每一個腳本......這似乎不是一個好的問題分離。 – Mir

0

數據主要用於當您的頁面只有一個requirejs應用程序時。如果你有多個,不要使用data-main。這是很簡單的,這裏是用你main.js和navigation.js

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

雖然我認爲你的頁面確實需要navigation.js一個例子。將每個頁面視爲應用程序。因此,數據主要正常進入你的main.js。

然後裏面main.js:

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