我的main.js如下所示
requirejs.config({
//By default load any module IDs from ../js
baseUrl: '../js',
paths : {
'jquery': 'libs/jquery',
'underscore': 'libs/underscore',
'backbone': 'libs/backbone',
'bootstrap': 'libs/bootstrap'
},
shim: {
'jquery': {
exports: '$'
},
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['jquery', 'underscore'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
},
'underscore': {
exports: '_'
},
'bootstrap': {
deps: ['jquery'],
exports: 'Bootstrap'
}
}
});
define(
['jquery', 'backbone','underscore', 'bootstrap'],
function (j, b, u, boot) {
console.log('jquery', j);
console.log('backbone', b);
console.log('underscore',u);
console.log('bootstrap', boot);
}
);
我的控制台图像是这样的:
当我点击X登录警报时,它们会消失。所以,我认为bootstrap.js正确加载。但是,它在控制台中表示未定义。任何人都能让我清楚的是bootstrap.js是否正确加载并且使用安全?为什么它会说未定义,而其余部分在控制台中定义得很好。
答案 0 :(得分:3)
由于jquery
,backbone
和underscore
导出全局变量要在其他地方使用,而bootstrap
只需要existing jquery object
并将添加插件对象,因此它不会导出任何东西。
因此,如果您尝试在define
回调中接收它,理想情况下它将是undefined
。如果您在页面上使用了任何bootstrap component
,如果它正在运行,则意味着集成了bootstrap。
来自requirejs shim docs
对于只需要导出任何模块值的jQuery或Backbone插件的“模块”,shim配置只能是一个依赖项数组:
requirejs.config({ shim: { 'bootstrap': ['jquery'] } });
因此,如果您愿意,您可以声明引导程序,就像在文档中指定的那样。