requireJS讓我頭痛atm。 requireJS是AMD,根據定義,它是異步的。通常我會定義一個像這樣的模塊。使用requireJS模塊定義的差異
define("some Name", ["./moduleOne"],function(moduleOne){
//this would be undefined
moduleOne.whatEver();
var aMethod = function(){
//user aModule.whatever();
}
return {
method: aMethod;
}
});
好吧,我得到了我不能直接使用moduelOne.whatever,因爲它是異步加載和它的不存在,如果回調被調用。
第一個問題,這是正確的嗎?
現在,如果我的模塊定義改成這樣:
define("some Name", function(require, exports){
var moduleOne = require(".moduleOne");
//this is OK
moduleOne.whatEver();
var aMethod = function(){
//user aModule.whatever();
}
exports.method = aMethod;
});
我可以直接使用aModule.whatever。當我從文檔中讀取時,使用這種(commonJS)風格,需要使用Function.prototype.toString解析函數,看到require語句並直接加載模塊。
我很確定,我在這裏誤解了一些東西,如果第二個樣式是真正同步的,那麼某人可以解釋究竟是如何requireJS的作品會很好。
謝謝