2011-12-10 21 views
37

我剛剛開始使用require.js。我已經成功地包裝了jquery,一些插件和幾個我自己的模塊。我試圖從Firebug(或Google Chrome的JS控制檯)與我的模塊(或jQuery)進行交互,並且我沒有太多運氣。從Firebug/Chrome控制檯與require.js模塊交互?

什麼是從控制檯訪問這些模塊的正確方法?

回答

52

說我們有模塊/app/scripts/methodsModule.js返回的幾種方法:

define({ 
    someMethod: function() { 
     // do stuff 
    }, 
    anotherMethod: function() { 
     // do some more stuff 
    } 
}); 

在我們的數據,主文件/app/scripts/main.js我們:

require(['methodsModule'], function(methods) { 
    methods.someMethod() // call someMethod 
    methods.anotherMethod() // call anotherMethod 
}) 

一旦requireJS負載了我們的數據爲主,我們可以訪問已加載由requireJS從JavaScript控制檯命令行,像這樣的任何模塊:

>> methods = require('methodsModule'); // requireJS has module methodsModule stored 
>> methods.someMethod() // call someMethod 
>> methods.anotherMethod() // call anotherMethod 

如果模塊尚未通過調用加載的要求()或定義(),我們要通過我們自己的回調的要求函數來調用該模塊加載後:

>> myCB = function(methods) { methods.someMethod() } 
>> require(['methodsModule'], myCB) 

否則,requireJS會拋出一個錯誤,指出該模塊尚未加載。

+1

這是否與requireJS「優化」腳本一起工作?也許我在這裏做錯了什麼,但它似乎並不適合我。 – Stephen

+0

截至2015年5月20日仍有效。在將「原始」項目轉換爲AMD時,我需要確保一切正常。但是,我無法找到定義執行後返回的模塊對象的位置。很好的解釋。 –

12

有一種方法不使用回調。

如果模塊沒有在控制檯要求或之前,你的應用程序,你可以要求它首先:

require(['methodsModule']); 
後,您可以使用「動態」

需要訪問它:

require('methodsModule').someMethod(); 
+0

這比我想要的要容易得多,'+ 0.1E1'。我寧願只是將模塊加載到窗口以方便訪問。 '需要([M = 'LIB/imagesloaded']); imagesLoaded =需要(M);' – Orwellophile