1

我的 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 是否正确加载并且可以安全使用?以及为什么它说未定义而其余部分在控制台中定义得很好。

4

1 回答 1

3

as jquery, backbone, 和underscoreexport 全局变量以在其他地方使用,而bootstrap将只使用existing jquery object并将插件添加到对象中,因此它不会导出任何内容。

因此,如果您尝试在define回调中接收它,理想情况下它将是undefined. 如果您bootstrap component在页面上使用了任何内容并且它正在工作,则意味着集成了引导程序。

来自 requirejs shim 文档

对于不需要导出任何模块值的只是 jQuery 或 Backbone 插件的“模块”,shim 配置可以只是一个依赖项数组:

requirejs.config({
  shim: {
    'bootstrap': ['jquery']
  }
});

所以,如果你愿意,你可以像文档中指定的那样声明引导程序。

于 2013-05-14T13:26:39.807 回答