我在角度js中听到很多关于依赖注入(DI)的内容。我们如何在backbone.js中实现相同目标。我正在浏览相同但所有文章都在requirejs
用于主干中的DI。骨干是如何做DI或如何在骨干中实现DI?
答案 0 :(得分:1)
Backbone没有包含DI的概念。它更像是一个库而不是一个框架。通常,像requirejs或browserify这样的工具会为您进行依赖注入。
我更喜欢它的CommonJS风格,在需要时调用require("module")
,如下所示:
//in file models/dependency1.js
define(function(require, exports, module){
var Backbone = require("backbone"); //shimmed in requirejs config
module.exports = Backbone.Model.extend({
defaults: {
name: "Silly Model"
}
});
});
//in another file
define(function(require, exports, module){
var Backbone = require("backbone"),
SillyModel = require("models/dependency1");
module.exports = Backbone.Collection.extend({
model: SillyModel
});
});
当然,这不是真正的 DI,因为您使用Java或.NET获得接口,但您也可以在需要时使用工厂模式,以便能够动态地提供依赖关系。
您也可以拨打require(XXX)
而不是SillyModel
:
module.exports = Backbone.Collection({
model: require("models/dependency1")
});
我更喜欢将依赖项摘要放在顶部,它简化了对此文件的理解。 :)
希望它有所帮助!
答案 1 :(得分:1)
cujo.js/wire将为您提供在JS中使用DI的架构工具集。它还捆绑了许多其他好东西(Promise,Polyfill,AOP,DOM处理等)。
它允许您以声明方式创建组件并连接这些组件,将引用注入到组件中。 github wiki page
Here是指向Github repo的链接,演示了如何并排使用cujo.js/wire
和backbone.js
。