Javascript 我的requirejs设置有什么问题?
我的requirejs配置文件在我看来是正确的。但当我进入我的函数启动我的应用程序时,我只能访问jQuery。有人能看看我的配置文件,告诉我我做错了什么吗?为什么我看不到主干线或下划线,为什么我可以看到jQuery?这是我的配置文件:Javascript 我的requirejs设置有什么问题?,javascript,requirejs,Javascript,Requirejs,我的requirejs配置文件在我看来是正确的。但当我进入我的函数启动我的应用程序时,我只能访问jQuery。有人能看看我的配置文件,告诉我我做错了什么吗?为什么我看不到主干线或下划线,为什么我可以看到jQuery?这是我的配置文件: require.config({ paths: { jquery: "libs/jquery/jquery", underscore: 'libs/underscore/underscore', backbone: "libs/back
require.config({
paths: {
jquery: "libs/jquery/jquery",
underscore: 'libs/underscore/underscore',
backbone: "libs/backbone/backbone"
},
shims: {
backbone: {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
},
underscore: {
exports: '_'
}
}
});
require(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {
'use strict';
debugger;
});
谢谢您的帮助。我认为您使用的是垫片,而不是单数垫片,更改它可以解决您的问题
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: [
'underscore',
'jquery'
],
exports: 'Backbone'
}
}
您使用的下划线和主干线版本不符合AMD,因此它们不会以require.js需要的方式返回。您可以将它们从函数参数中删除,它们将在全局范围中可用。否则,将未定义的作为u和主干的值传递到函数中
require(['jquery', 'underscore', 'backbone'], function() {
console.log($);
console.log(_);
console.log(Backbone);
});
这就是他在require中使用shim的原因,因为他没有使用AMD兼容的版本。是的,但没有理由使用shim,因为它们将是全局的。否,因为他在html中声明它们使用require而不是常规脚本标记,所以,在当时,如果不使用垫片就需要主干网,那么它将失败。我认为require的目的之一就是不需要一堆全局的?那么这三个文件中的每一个都是全球性的?是的,但这是不可避免的,除非OP使用的是AMD兼容版本的文件(下划线,主干线)