使用r.js打包使用RequireJS编写的库,以便在其他RequireJS应用程序中重用

时间:2013-07-30 21:54:08

标签: javascript requirejs r.js

所以我想说我有一些我开发和编写的库代码。我在开发期间使用RequireJS并且具有依赖于另一个文件的根级文件。所以它define看起来像......

// lib/main.js
define(['lib/dep1'] function(dep1) {
  ...
})

我在导致dist/myLibrary.js的代码上运行r.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用例,因为这是所有内部lib开发,我们都使用RequireJS。因此,在一个完全AMD的环境中,还有另一种更好的方法吗?假设这种方法没有陷阱,看起来相当简单,需要支持。

0 个答案:

没有答案