tiny-ioc

0.1.1 • Public • Published

tiny-ioc

A really simple and lightweight ioc container built in nodejs

Installation

$ npm install tiny-ioc

How to use tiny-ioc

Basic usage:

You register your dependency in the container with a unique name. If you use the same name twice, tiny-ioc will throw an exception.

var ioccontainer = require("tiny-ioc");
 
var myobject = function() { 
    this.name = "my name is ronald" 
}
ioccontainer.register("name", myobject);
 
var resolvedobject = ioccontainer.resolve("name");
console.log(resolvedobject.name); ==> outputs: "my name is ronald"
 

Nested Dependencies:

When resolving objects that have dependencies on other services, tiny-ioc will auto resolve them by default for you by mapping the name of the parameters.

var ioccontainer = require("tiny-ioc");
 
var logger = function() { 
    this.log = function(message) {
        console.log(message);
    } 
}
var myobject = function(logger) { 
    
    this.doSomething = function() {
        logger.log('something happened!'); 
    }
}
 
ioccontainer.register("logger", logger);
ioccontainer.register("myobject", myobject);
 
var resolvedobject = ioccontainer.resolve("myobject");
resolvedobject.doSomething() ==> outputs: "something happened!"
 

Singletons:

Tiny-ioc can also register your objects as singletons.
example:

var ioccontainer = require("tiny-ioc");
 
var myobject = function() { 
    this.name = '';
}
 
ioccontainer.registerAsSingleton("myobject", myobject);
 
var resolvedobject = ioccontainer.resolve("myobject");
resolvedobject.name = "Ronald";
 
var secondResolvedObject = ioccontainer.resolve("myobject");
console.log(secondResolvedObject.name'); ==> outputs: "Ronald" 
 

Resolving dependencies without registration:

If you have an object that has dependencies on other services, you can always let tiny-ioc inject those for you, even if the your object is not registered in the container.

var ioccontainer = require("tiny-ioc");
 
var logger = function() { 
    this.log = function(message) {
        console.log(message);
    } 
}
 
ioccontainer.register("logger", logger);
 
var myobject = function(logger) { 
    
    this.doSomething = function() {
        logger.log('something happened!'); 
    }
}
 
 
 
var myobjectinstance = ioccontainer.resolve(myobject);
resolvedobject.doSomething() ==> outputs: "something happened!"
 

General

By default tiny-ioc will try to find all nested dependencies of a resolved object and will throw an error if it cannot find one. You can bypass this behavior when registering your object.
example:

var ioccontainer = require("tiny-ioc");
 
var myobject = function(unknowndependency) { 
    // some inner logic
}
 
ioccontainer.register("myobject", myobject, 
    { ignoreSubDependencies: true });
 
var myobjectinstance = ioccontainer.resolve("myobject");
==> does not throw.
 

Build Status

Package Sidebar

Install

npm i tiny-ioc

Weekly Downloads

1

Version

0.1.1

License

ISC

Last publish

Collaborators

  • rvdkooy