0.9.0 • Published 9 years ago

springbokjs-di v0.9.0

Weekly downloads
3
License
MIT
Repository
github
Last release
9 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

9 years ago

0.7.0

9 years ago

0.6.1

9 years ago

0.6.0

9 years ago

0.5.1

9 years ago

0.5.0

9 years ago

0.4.1

9 years ago

0.4.0

9 years ago

0.3.0

9 years ago

0.2.1

10 years ago

0.1.0

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago