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