5

我们正在创建一个打算在多个项目中使用的框架。所有项目都将使用 require.js 来管理模块和依赖项。

理想情况下,我想使用 r.js 优化器将框架编译成一个文件,该文件可以提供给使用它的应用程序。该文件将包含框架的所有模块,以便在我的应用程序中我可以编写如下代码:

define(["framework/util/a", "framework/views/b"], function(A, B) {
  var a = new A();
  // etc...
});

但这种方法似乎存在两个问题。

  1. 取决于framework/util/a不告诉 require.js 它需要加载framework.js它会找到的位置util/a
  2. 优化工具为包含在其中的所有模块生成名称,framework.js即使define("util/a", function() { ... } ); 加载了 require.js framework.js,也没有任何东西告诉它定义的模块util/a是相对模块,framework因此被标识为framework/util/a

我是否遗漏了什么或者是将我的框架构建为CommonJS 包并使用 require.js 的packages配置选项的更好方法?

4

1 回答 1

2

Re: 1. 似乎 r.js 优化确实不是为了优化部分依赖树而设计的,因为延迟加载取决于文件路径。例如,要求path/to/module实际加载path/to似乎是一种 hack。一种解决方案是放弃延迟加载并包含framework-built.js在您的应用程序代码之上。

回复:2。所以你现在需要你framework-built.js的完整路径。一种方法是构建一个需要所有内容的虚拟父级framework,例如dummy-framework.js。这样,您dummy-framework-built.js将拥有完整的路径定义framework,如果不是延迟加载,它应该可以正常工作。

免责声明:尽管这是我的最大努力,但我并没有过多地使用 require.js :)

于 2012-08-19T15:02:35.583 回答