0.1.1 • Published 10 years ago

tiny-ioc v0.1.1

Weekly downloads
4
License
ISC
Repository
github
Last release
10 years ago

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

0.1.1

10 years ago

0.1.0

10 years ago

0.0.1

10 years ago

0.0.0

10 years ago