Javascript backbone.js上下文中的依赖项注入
我在angular js中听说了很多关于依赖注入(DI)的事情。如何在backbone.js中实现同样的功能。我正在浏览相同的内容,但所有文章都在主干网中使用DI的Javascript backbone.js上下文中的依赖项注入,javascript,backbone.js,dependency-injection,requirejs,Javascript,Backbone.js,Dependency Injection,Requirejs,我在angular js中听说了很多关于依赖注入(DI)的事情。如何在backbone.js中实现同样的功能。我正在浏览相同的内容,但所有文章都在主干网中使用DI的requirejs。主干网如何进行DI,或者我们如何在主干网中实现DI?主干网没有包含DI的概念。与其说它是一个框架,不如说它是一个库。通常,像requirejs或browserify这样的工具会为您进行依赖注入 我更喜欢它的CommonJS风格,在需要时调用require(“module”),如下所示: //in file mode
requirejs
。主干网如何进行DI,或者我们如何在主干网中实现DI?主干网没有包含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
});
});
当然,这并不是Java或.NET中所使用的真正的DI接口,但在需要时,您也可以使用工厂模式,以便真正能够动态地提供依赖关系
您也可以调用require(XXX)
而不是SillyModel
:
module.exports = Backbone.Collection({
model: require("models/dependency1")
});
我更喜欢将依赖项摘要放在顶部,这样可以简化对该文件内容的理解。:)
希望有帮助 将为您提供在JS中使用DI的架构工具集。它还捆绑了许多其他东西(Promise、Polyfill、AOP、DOM处理等)
它允许您以声明方式创建组件并连接这些组件,将引用注入到组件中
是指向Github repo的链接,该链接演示如何并排使用cujo.js/wire
和backbone.js