0.9.0 • Published 10 years ago

springbokjs-di v0.9.0

Weekly downloads
3
License
MIT
Repository
github
Last release
10 years ago

springbokjs-di NPM version Build Status Coverage

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();
        })
    });
});
0.9.0

10 years ago

0.7.0

10 years ago

0.6.1

10 years ago

0.6.0

10 years ago

0.5.1

10 years ago

0.5.0

10 years ago

0.4.1

11 years ago

0.4.0

11 years ago

0.3.0

11 years ago

0.2.1

11 years ago

0.1.0

11 years ago

0.0.3

11 years ago

0.0.2

11 years ago

0.0.1

11 years ago