如何创建一个结构化为AMD模块的可重用库
How can one create a reusable library structured as AMD module(s)?
我们正在创建一个框架,打算在多个项目中使用。所有项目都将使用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
,也不会"告诉"它定义的模块util/a
是framework
的相对模块,因此被标识为framework/util/a
我是遗漏了什么,还是有更好的方法将我的框架构建为CommonJS包并使用require.js的packages
配置选项?
Re: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,尽管这是我最大的努力:)
相关文章:
- 如何将多个 AMD 模块捆绑在一个文件中
- AMD 模块中的动态导出
- 使用 Babel 将 ES6 模块转换为 ES5 AMD 模块,无法按预期工作
- JavaFX+Javascript:如何将Java对象注入AMD模块
- Javascript应用程序作为具有外部依赖关系的AMD模块
- 如何将预编译的hogan.js模板封装到AMD模块中
- 当混合node和amd模块时,requirejs()返回undefined
- 如何创建一个结构化为AMD模块的可重用库
- 我可以在网络工作者中加载AMD模块吗
- 如何从TypeScript编译中现有的AMD js类继承到AMD模块
- 使用磁带/ES6 单元测试测试 AMD 模块
- 如何将 AMD 模块从单例转换为实例
- 为什么串联的 RequireJS AMD 模块需要一个加载器
- 如何从道场层加载 AMD 模块
- 从前台检索后台页面的 AMD 模块
- 配置需要 js 才能在 javascript 中加载 AMD 模块
- 如何使用 tsc 从打字稿生成 amd 模块
- 如何使用jspm/system.js正确加载本地AMD模块
- Davis.js作为AMD模块
- RequireJS-在require流和内联中加载AMD模块