因此,可以说我有一些库代码是我单独开发和测试的。我在开发过程中使用 RequireJS,并且有一个依赖于其他文件的根级文件。所以它define
看起来像......
// lib/main.js
define(['lib/dep1'] function(dep1) {
...
})
我在导致 的代码上运行 r.js dist/myLibrary.js
,它看起来像这样:
define('lib/dep1',[], function(){...})
define('lib/main',["lib/dep1"], function(dep1){...})
如果我myLibrary.js
直接进入另一个项目,它将无法正常工作。没有任何东西将自己定义为该文件的模块。但是如果我附加一个实际的模块定义,它就可以工作。
define('lib/dep1',[], function(){...})
define('lib/main',["lib/dep1"], function(dep1){...})
define(['lib/main'], function(lib) {
return lib;
})
并且['lib/main']
似乎仅限于模块,因为如果我的lib/main
应用程序中有一个实际的,它就不会被使用。
问题:
- 关于范围界定,这是正常行为吗?
lib/main
被识别为来自同一文件的模块 id 而不是去其他地方寻找它的事实。如果我导入 10 个这样的库,它们都具有lib/main
,它们不会发生冲突吗? - 有没有更好的办法?我至少最初并不关心支持非 AMD 用例,因为这都是内部库开发,我们都使用 RequireJS。那么在完全 AMD 的环境中,是否有另一种更好的方法来做到这一点?假设这种方法没有陷阱,它似乎相当简单且支持样板。