http://www.zjwen.com/
这里面的jquery没有引入成功,导致$无法解释,seach.js和bootstrap.js集体报错。
我是用seajs整合引用的,我在目录下查看,引用成功,而且顺序也是对的。
用bower重装一遍jquery和jquery-ui也没有用,这是什么原因?
http://www.zjwen.com/
这里面的jquery没有引入成功,导致$无法解释,seach.js和bootstrap.js集体报错。
我是用seajs整合引用的,我在目录下查看,引用成功,而且顺序也是对的。
用bower重装一遍jquery和jquery-ui也没有用,这是什么原因?
你在使用seajs.use 时,这几个js是同时请求的,并没有按顺序执行,所以你就无法保证,每次bootstrap是在执行完jquery文件之后。修改意见,一种是把 bootstrap这种依赖别的库的,用回调的方式执行。
seajs.use(['jquery','avalon'],function(){
seajs.use(['jquery.ui','bootstrap','search','blog'];
})
或者使用 seajs的预加载功能,加载全局的js文件。在seajs config文件中添加:
preload: [
window.jQuery ? '' : 'jquery'
]
jquery 默认支持cmd规范
if ( typeof define === "function" && define.cmd ) {
define( "jquery", [], function() {
return jQuery;
});
}
改成amd
if ( typeof define === "function" && define.amd ) {
define( "jquery", [], function() {
return jQuery;
});
}
因为bootstrap对jquery是有依赖关系的,bs必须在jquery之后加载。因此需要用如下语句把bs代码包起来,这样就可以保证bs在jquery之后初始化。
补充一下。不建议楼下的写法。楼下的写法属于原生js的思路,不符合sea的理念。sea的理念是不指定加载顺序,而是指定依赖关系,sea会分析各模块之间的依赖关系,来制定加载顺序,保证正确加载,同时不会出现重复加载。
手动指定顺序无疑是放弃了sea最关键的依赖机制,那又何必引入sea……