我正在开发一个使用 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
。这不是一个 AMD 模块,因此就 RequireJS 而言,它没有 define()
任何东西。 (实际上它在全局范围内定义了一些东西,但 Require 并不关心这个。)这就是为什么你有 underscore_global
垫片。我建议进行以下更改:
require.config({
shim: {
underscore_global: {
exports: '_',
deps: ['underscore']
},
myPlugin: {'deps': ['jquery', 'underscore_global']},
...
}
});
关于javascript - 为什么我的插件不加载它的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18868217/