var $ = require("jquery");
今天在用seajs集成js的時候,總是發現$獲取不到,可是文件又加載進去了,後來找了半天發現是這個問題。jquery
本質的緣由在於seajs有一個路徑和ID匹配的原則
git
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不一樣,致使這個現象。解決方法很簡單github
define(function(){return jQuery});
把定義的id和依賴所有刪了就好了。ui