【发布时间】:2016-04-22 07:54:24
【问题描述】:
我们决定开始将 RequireJS 用于我们正在开发的 JavaScript 库。我对 RequireJS 比较陌生,我想知道我必须做什么才能确保我们库的模块名称不会与使用我们库的任何应用程序模块发生冲突。例如,如果我定义模块 encoding.js:
define("encoding", ["dependency"], function(myDep) {
...
})
似乎使用我的库并且本身具有 encoding.js 的应用程序会导致名称冲突。是否有任何 ReuireJS 选项可以用来“屏蔽”我的库名称,使其免受使用我们库的任何应用程序的影响?
另外,我知道第一个参数“encoding”是可选的。我添加它的原因是我们使用了 minify-maven-plugin 来构建我们的库。这使得库中的所有模块最终都在一个文件中,然后似乎我需要添加模块名称,否则我会收到不匹配的匿名定义模块错误(http://requirejs.org/docs/errors.html#mismatch)。我想我可能会改用 r.js 优化工具。是否也可以设置它来消除名称冲突问题?
实际上,我想我们可能会通过将 define 调用封装在如下内容中来使我们的库与 RequireJS 无关:
(function(root, factory) {
if (typeof define === "function" && define.amd) {
define("encoding", ["dependency"], factory);
} else {
root.MyLib.Encoding = factory(MyLib.Deps);
}
}(this, function() {
...
}))
我找到了这个话题:Creating a reusable RequireJs library,但没有得到明确的答案,也不是我想要的。
【问题讨论】:
标签: javascript requirejs r.js