require(['underscore'], function ($, _) {
...
});
不工作!(_
不是函数)
如何管理它?
require(['underscore'], function ($, _) {
...
});
不工作!(_
不是函数)
如何管理它?
请注意,underscore.js 不会将自己注册为 AMD 模块(尽管它在早期版本中只注册了一段时间),因此如果没有使用“shim:”进行一些配置,它就不能在 require() 调用中使用,就像这样:
require.config({
paths: {
jquery: 'lib/jquery.min',
underscore: 'lib/underscore-min'
}
shim: {
"underscore": {
exports: "_"
}
}
});
请参阅以下文档:http ://requirejs.org/docs/api.html#config-shim
在shim:
添加到 require.js 之前,您可以使用插件 use.js 执行类似的操作(以防您需要使用较旧版本的 require.js)。
在撰写本文时,require.js 的当前版本是 2.1.8。
或者,您可以使用 lodash.js 作为 underscore.js 的替代 - 它确实将自己注册为 AMD 模块,因此您可以在没有额外配置的情况下使用它:http: //lodash.com/
我认为问题在于传入回调的参数的顺序。
应该:
require(['underscore'], function (_, $) {
...
});
您还需要使用添加了此功能的下划线版本 1.2.1。
require(["underscore"], function() {
console.log(_ === window._);
});
这一切都取决于脚本所在的位置。因为我没有看到您指定了 baseUrl,所以 baseUrl 将是默认值,这意味着,有两件事:
检查 underscore.js 是否真的存在。
以下是您的检查点,以确保您需要的工作正常
获取require-jquery.js并将其放入您的/js-root
目录
</body>
在结束标记之前添加到您的 HTML :<script data-main="/js-root/main-js-file-name" src="/js-root/require-jquery.js"></script>
获取适用于 AMD 的下划线,并将其放入/js-root
dir 中
在main-js-file-name.js
写:
require(["jquery", "underscore"], function ($, _) {
...
});
同样,在您的非主 AMD JS 文件中,当定义一个模块时,要使用_
,编写:
define(["jquery", "underscore"], function ($, _) {
...
return theModuleObjectOrFunction;
});