Dependency container, based on Angular.Js service syntax, includes React.js mixin
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
dist
.gitignore
README.md
bower.json
index.js
package.json
tests.js

README.md

#dicontainer

Tiny dependency container

  • Handles resolution of dependencies
  • Lazy instantiation (services arent created until they are needed)
  • Understands Angular.js providers/services/factories/globals
  • Provides simple React.js compatible Mixin for attaching services
  • Tests for circular dependencies
  • less than 1kb (gzipped)
  • Isomorphic

###Basic Usage

####Setup

var Container = require('dicontainer');

var appContainer = new Container(logFunction /* optional */);

####Registration

container.register(name, factory /* or service/provider */);


function MathService(other) {}
MathService.prototype.add = function (a,b) { return a+b; };
MathService.$inject = ['OtherService']; 

appContainer.register('MathService', MathService); // Dependencies are read from $inject property

// --- or ----

function MathService(other) {}
MathService.prototype.add = function (a,b) { return a+b; };

appContainer.register('MathService', MathService, ['OtherService']); // Dependencies are specified as array

// --- or ----

function MathService(other) {}
MathService.prototype.add = function (a,b) { return a+b; };

appContainer.register('MathService', ['OtherService', MathService]); // Dependencies and service are specified as array

####Resolution

var instance = container.resolve(name);


var MathService = appContainer.resolve('MathService');
MathService.add(1,2);

####Mixin

Service instances are attached to this.services

var Calculator = React.createClass({
	
	mixins: [appContainer.Mixin('MathService', 'OtherService')]

	render: function () {
		this.services.MathService.add()
	}
});

####Building & testing

npm run build // lint, test & compile dist
npm test // test in terminal
npm run test-local // run test in browser