seajs require("jquery")返回null解決方法
jquery
seajs.use 某具名模塊時發現其引用爲 null 的問題,或是移動了文件位置致使引用爲 null 或者 object is not function 的問題。這些問題都指向 Sea.js 的一個基本約定原則:ID 和路徑匹配原則。git
使用 seajs.use 或 require 進行引用的文件,若是是具名模塊(即定義了 ID 的模塊),會把 ID 和 seajs.use 的路徑名進行匹配,若是一致,則正確執行模塊返回結果。反之,則返回 null。github
首先能夠先參 看這個issue:https://github.com/seajs/seajs/issues/962curl
因爲在 Sea.js 中,全部 JavaScript 模塊都遵循 CMD(Common Module Definition) 模塊定義規範。該規範明確了模塊的基本書寫格式和基本交互規則。ui
jQuery 1.7開始支持AMD規範,能夠和遵循AMD規範的腳本加載器協做,好比RequireJS或者curl.js。url
因此須要調整JQuery源碼,以下:spa
//old if ( typeof define === "function" && define.amd && define.amd.jQuery ) { define( "jquery", [], function () { return jQuery; } ); } //new if ( typeof define === "function" && define.cmd && define.cmd.jQuery ) { define( "jquery", [], function () { return jQuery; } ); }