springbokjs-di
v0.9.0
Published
springbokjs dependency injection library
Downloads
8
Maintainers
Readme
springbokjs-di
Dependency injection library
How to use
ES5
lib/a.js
a simple singleton
exports.A = (function() {
var A = function() {
};
A.singleton = true;
A.prototype.sayHello = function(name) {
return 'Hello ' + name + '!';
};
return A;
})();
lib/b.js
b has a dependency with a
exports.B = (function() {
var B = function() {
};
B.singleton = true;
B.dependencies = ['a'];
B.prototype.sayHello = function(name) {
return this.a.sayHello(name);
};
return B;
})();
lib/class1.js
An example of non singleton class
exports.Class1 = (function() {
var Class1 = function(name) {
this.name = name;
};
Class1.prototype.sayHello = function() {
return 'Hello ' + this.name + '!';
};
return Class1;
})();
lib/class2.js
For classes, the dependencies are resolved when a class is instancied
exports.Class2 = (function() {
var Class2 = function() {
};
Class2.dependencies = ['a'];
Class2.prototype.setName = function(name) {
this.name = name;
};
Class2.prototype.sayHello = function() {
return this.a.sayHello(this.name);
};
return Class2;
})();
app.js
var diUtils = require('springbokjs-di');
var Di = diUtils.Di;
var di = new Di();
diUtils.directory(di, 'lib/').then(function() { // load classes from the directory
return di.a.then(function(a) {
a.sayHello('James');
}).then(function() {
return di.createInstance('Class1', ['James']).then(function(class1) {
class1.sayHello();
})
});
});
ES6 with es6like-class
lib/a.js
a simple singleton
export var A = newClass({
static: {
singleton: true
},
sayHello(name) {
return 'Hello ' + name + '!';
};
});
lib/b.js
b has a dependency with a
export var B = newClass({
static: {
singleton: true,
dependencies: ['a']
},
sayHello(name) {
return this.a.sayHello(name);
};
});
lib/class1.js
An example of non singleton class
export class Class1 {
constructor(name) {
this.name = name;
}
sayHello() {
return 'Hello ' + this.name + '!';
}
}
lib/class2.js
For classes, the dependencies are resolved when a class is instancied
export var Class2 = newClass({
static: {
dependencies: ['a']
},
setName(name) {
this.name = name;
},
sayHello() {
return this.a.sayHello(this.name);
}
});
app.js
var diUtils = require('springbokjs-di');
var Di = diUtils.Di;
var di = new Di();
diUtils.directory(di, 'classes/').then(() => { // load classes from the directory
return di.a.then((a) => {
a.sayHello('James');
}).then(() => {
return di.createInstance('Class1', ['James']).then((class1) => {
class1.sayHello();
})
});
});