我正在开发一个使用require.js加载依赖项的应用。我还为应用程序中使用的jQuery编写了一个插件。 jQuery插件依赖于Underscore,但不支持AMD。我的问题是,在运行应用程序时,我的插件无法使用Underscore。
一些代码段:
index.js
require.config({
baseUrl: "js/app",
paths: {
underscore: "//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min",
myPlugin: '../lib/myPlugin/myPlugin.js',
},
shim: {
underscore_global: {
exports: '_'
},
myPlugin: {'deps': ['jquery', 'underscore']},
}
});
使用我的插件:
define(function (require) {
"use strict";
var $ = require('jquery'),
myPlugin = require('myPlugin')
控制台说,当插件试图调用函数时,Underscore(_
)是未定义的。
我做错了什么?
答案 0 :(得分:0)
您的插件取决于underscore
。这是 NOT 一个AMD模块,因此就RequireJS而言,define()
没有underscore_global
。 (实际上它定义了全局范围内的某些内容,但Require并不关心这一点。)这就是为什么你有require.config({
shim: {
underscore_global: {
exports: '_',
deps: ['underscore']
},
myPlugin: {'deps': ['jquery', 'underscore_global']},
...
}
});
垫片的原因。我建议进行以下更改:
{{1}}