1

因此,可以说我有一些库代码是我单独开发和测试的。我在开发过程中使用 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应用程序中有一个实际的,它就不会被使用。

问题:

  1. 关于范围界定,这是正常行为吗?lib/main被识别为来自同一文件的模块 id 而不是去其他地方寻找它的事实。如果我导入 10 个这样的库,它们都具有lib/main,它们不会发生冲突吗?
  2. 有没有更好的办法?我至少最初并不关心支持非 AMD 用例,因为这都是内部库开发,我们都使用 RequireJS。那么在完全 AMD 的环境中,是否有另一种更好的方法来做到这一点?假设这种方法没有陷阱,它似乎相当简单且支持样板。
4

0 回答 0