我们正在创建一个我们打算在多个项目中使用的框架。所有项目都将使用require.js来管理模块和依赖项。
理想情况下,我想使用r.js优化器将框架编译成单个文件,可以提供给使用它的应用程序。该文件将包含框架的所有模块,以便在我的应用程序中我可以编写如下代码:
define(["framework/util/a", "framework/views/b"], function(A, B) {
var a = new A();
// etc...
});
但这种方法似乎存在两个问题。
framework/util/a
不会告诉require.js需要加载framework.js
,util/a
framework.js
中包含的所有模块生成名称,例如define("util/a", function() { ... } );
即使require.js已加载framework.js
,也没有任何内容可以告诉它已定义的模块{{1} }是util/a
的相对模块,因此被标识为framework
我是否遗漏了某些内容,或者是将我的框架构建为 CommonJS软件包并使用require.js的framework/util/a
配置选项的更好方法?
答案 0 :(得分:2)
Re:1。似乎确实r.js优化不是为了优化部分依赖树而设计的,因为延迟加载取决于文件路径。例如。要求path/to/module
实际加载path/to
看起来像是黑客。一种解决方案是放弃延迟加载并将framework-built.js
包含在应用程序代码之上。
Re:2。所以你现在需要你的framework-built.js
完整路径。一种方法是构建一个需要所有framework
的虚拟父级,比如说dummy-framework.js
。这样你的dummy-framework-built.js
将为framework
定义完整路径,如果没有延迟加载,它应该可以正常工作。
免责声明:我没有使用过require.js,尽管这是我的最大努力:)