colle

0.1.5 • Public • Published

colle

Build Status

A simple Nodejs dependency injection framework inspired by Angularjs. I build this framework to be used in conjunction with coffescript's programs where everything is compiled in a single js file; so I don't have to worry about compilation order. Also I believe it can be reused for other cases...

Installation

npm install colle

Usage

Create an injector

call the make function, the result should be reused globally.

colle = require('colle').make();

Add dependencies

call the set function with the following parameters to create a dependency:

  1. a name
  2. an array of dependencies
  3. a constructor function taking denpendecies as parameters The result of the constructor will be injected.

An exemple for an injector that create a counter that do not take dependencies:

colle.set("counter", [], function() {
    var _value = 0;
    return {
        addOne: function() {
            _value += 1;
        },
        value: _value
    };
});

A injector to print the counter dependency.

colle.set("print", ["counter"], function(counter) {
    return function() {
      console.log(counter.value);
    };
});

Init function

Sometimes construction can fail (like the connection to a database). You can define an _init function that takes a callback to report the error:

colle.set("db", [], function() {
    var db = null;
    
    var _init = function(cb) {
        connectDb(function(error, instance) {
            if (error)
                return cb(error); // some error!
            db = instance;
            cb(null); // ok, everything is fine!
        });
    };
    
    return {
        db: db
        _init: _init
    };
});

Note that when a dependency failed to start properly the whole process is halted.

Starting

At the end of the program call the start method to setup all the contructors in the right order (if a cyclic dependency is detected, an exception will be thown):

colle.start(function(err) {
    if (err)
     return console.log "something wrong happend: " + err;
    console.log "dependencies are ready!";
    counter = colle.get("counter");
    counter.addOne();
    console.log(counter.value);
};

Inside the start function call the get method to get a dependency.

Package Sidebar

Install

npm i colle

Weekly Downloads

1

Version

0.1.5

License

Apache-2.0

Last publish

Collaborators

  • fdelbos