var $ = require("jquery");
今天在用seajs集成js的時候,老是發現$獲取不到,但是文件又加載進去了,后來找了半天發現是這個問題。
seajs的設計思想是,路徑即ID。一般在調用define()方法時,如果只傳遞一個factory function,那么這個模塊就是個匿名模塊;或者傳遞define(module_id, dependency, factory),這個模塊就是個具名模塊
如果一個文件就是一個模塊,那么匿名模塊就可以了。但是在生產環境中,往往會把多個模塊放到一個文件里,但是路徑只有一個,如何知道要加載哪個模塊呢?這時候就需要給其中一個模塊賦予module_id,和path保持一致,seajs就知道應該加載這個ID和path匹配的模塊了
如果具名模塊的id和require的path參數不匹配,就會返回null,這就是我出現這個錯誤的原因:
在jquery底部的代碼有這樣一行
define("jquery/jquery/1.10.1/jquery-debug", [], function () { return jQuery; } );// module_id是"jquery/jquery/1.10.1/jquery-debug"
這個id和require的時候path不同,導致這個現象。解決方法很簡單
define(function(){return jQuery});
把定義的id和依賴全部刪了就行了。