seajs集成jquery的一個坑


var $ = require("jquery"); 

今天在用seajs集成js的時候,老是發現$獲取不到,但是文件又加載進去了,后來找了半天發現是這個問題。

本質的原因在於seajs有一個路徑和ID匹配的原則

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和依賴全部刪了就行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM