sea.js jquery not defined
原文链接 http://veryyoung.me/blog/2015/09/11/seajs-preload-lazy.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
用sea.js的preload去加载bootstrap和jquery,会经常出现
$ is not defined
<!-- more -->
大概如下配置的:
seajs.config({
base: '/static/js/modules/',
alias: {
'jquery' : 'jquery.js',
'bootstrap' : 'bootstrap/js/bootstrap.min.js'
},
preload : ['jquery', 'bootstrap'],
charset : 'utf-8'
})
首先得把所有引用的模块都得打成CMD模块。
用类似如下的代码:
define(['jquery'], function(require, exports, module){
});
包好之后还是会出现以上描述的问题。
原因是因为 bootstrap 也依赖了 jquery 。
而 preload 的加载数组是没有次序依赖的。和 seajs.use(array) 一样。
可以如下配置
// 将 jQuery 暴露到全局
seajs.modify('jquery', function(require, exports) {
window.jQuery = window.$ = exports
})
或者在每个页面 use js 的时候都 use jquery。
其实也可以在common文件里面
<scrpit src = "../jquery.js" ></scrpit>
参考: