使用 RequireJS 自动加载依赖模块
automatically loading of a dependent module using RequireJS
我正在使用Knockout和Require。我想在一个单独的模块中有一些 Knockout 处理程序。没有依赖于此模块的 JavaScript 代码,但它用于 HTML 中的数据绑定属性。
我如何告诉 Require,每当添加用于 Knockout 的脚本时,它也应该添加此模块,并且它依赖于 Knockout(它应该能够使用"ko")?
如果我没看错的话,这只是关于"定义一个具有依赖项的模块",这是一个非常基本的requirejs。看看requirejs api文档中的"具有依赖关系的定义函数"部分。
以下是文档中的示例:
//my/shirt.js now has some dependencies, a cart and inventory
//module in the same directory as shirt.js
define(["./cart", "./inventory"], function(cart, inventory) {
//return an object to define the "my/shirt" module.
return {
color: "blue",
size: "large",
addToCart: function() {
inventory.decrement(this);
cart.add(this);
}
}
}
);
因此,您也可以在淘汰处理程序中执行此操作,在那里您可以将淘汰依赖项传递给函数。然后,在每个需要 knockout 的模块中,将 knockout 处理程序添加到 define 语句中的依赖项中。如果你不需要它们在模块中,而只需要在 DOM 中,那么你就不必将它们传递给函数参数。您可以将挖空处理程序添加到定义依赖项列表的末尾,而无需添加其他参数,如下所示:
define(["knockout", "knockout-handlers"], function(knockout) {
//you're module using knockout,
//knockout-handlers will be available inside the dom
});
当我重新思考我的答案时,我得出的结论是循环依赖在这里不是问题。你可以为"自动依赖"使用填充码配置:
//within your config
requirejs.config({
shim: {
'knockout': {
deps: ['knockout-handlers']
}
}
});
//your knockout handlers module definition
define(["knockout"], function(knockout) {
return {
//Your knockout-handler module
}
});
这应该在每次加载淘汰赛时加载您的淘汰赛处理程序。
相关文章:
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- 节点模块依赖关系
- 限制npm依赖模块's require(隔离)的用法
- 要求创建空模块作为依赖项加载程序
- 如何使用jasmine节点监视依赖模块内部的方法
- 库中的匿名定义()模块's的依赖关系导致库损坏'的家属
- 角度模块依赖项的命名约定
- JavaScript模块化和依赖注入之间的区别
- ES6模块导入和依赖关系管理
- 要安装依赖项的自定义节点模块
- 阻止浏览包含模块'的依赖关系
- Javascript应用程序作为具有外部依赖关系的AMD模块
- 如何管理不同的 Angular 模块依赖关系
- 打包具有依赖关系的Browser/Server CommonJS模块
- 在 Angular 中动态注入依赖模块
- RequireJS - 先初始化一个依赖模块,然后再加载其他模块
- 将ngAnimate包含为依赖模块时出错
- Javascript在单元测试中用模拟版本修补现有的外部依赖模块方法
- 使用 RequireJS 自动加载依赖模块
- Angularjs中的多依赖模块