我想一個方法來創建我的模塊工作Requirejs模塊,它們可以使用和不requirejs使用(沒有要求他們應該只是正常工作的js,所以我必須要確保他們正確加載,比如按照正確的順序放置腳本標籤)。寫,沒有requirejs
所以jQuery不會是kindof這樣的:
// export module
if (typeof define === "function" && define.amd) {
define(["dep"], function(dep){
dep.fn.test = test;
return dep;
});
}
else{
dep.fn.test = test;
}
實際的模塊定義爲像這樣
var dep = function(...){...}
這個定義,出口部分是IIFE內把一切都在出全球範圍。
一般來說,它有效,但有一個例外,依賴項不可用。 這個問題可以通過在定義部分中定義函數來解決,但是這意味着定義它兩次,在定義部分和在其他部分中定義它。
我怎樣才能使這個工作,但只定義模塊一次?
我有「插件式」擴展到核心DEP它都應該在單獨的文件,因此主要DEP必須作爲一個depenency
這工作得很好BTW傳遞。但這意味着我編寫了兩次測試代碼。
(function(){
// export module
if (typeof define === "function" && define.amd) {
define(["dep"], function(dep){
dep.fn.test = function(){...ssomething using dep...};
return dep;
});
}
else{
dep.fn.test = unction(){...ssomething using dep...};
}
})
好吧,我試試另一個例子
動畫/ animate.js(這是我的主文件)
define(function(){
...
return animate;
});
動畫/模塊/ easing.js(這是一個模塊文件) (function(){ var ease = function(){ //使用animate.js的主動函數動畫 // animate在這裏不可用 ... };
if (typeof define === "function" && define.amd) {
define(["animate/animate"], function(animate){
// animate is available here
...
animate.fn.ease = ease;
return animate;
});
}
else
{
// if no requirejs, animate is global
animate.fn.ease = ease;
}
});
嘿,我不這麼認爲,因爲「測試」已經註冊,並且通常dep已經註冊,測試是dep的一種方法。但是我不能在測試函數中訪問dep IF(並且只有)我定義了requirejs define語句的測試工具。如果我在它的好的範圍內定義它。如果我錯了,請更詳細地解釋它,以便我知道我能在哪裏解決問題。 –
@LukasOppermann更新了一個適合您情況的示例。 – tvanfosson
對不起,但這沒有幫助,我需要他們在單獨的文件,這就是爲什麼我在任何情況下使用requirejs。我只需要知道如何編寫「easing」函數一次,但是它只能在define調用中嘗試訪問主動畫對象。 –