infector

Dependency injection for Node.js and the browser.

Infector

Dependency injection for Node.js and the browser. Inspired by the dependency injection approaches in AngularJS and node-di. No relation to Infector++.

In the browser, Lo-Dash is a dependency and Infector is exposed as a global. So do something like:

<script src="lodash.js"></script>
<script src="infector.js"></script>

Using Bower:

$ bower install infector --save

In Node.js:

$ npm install infector --save

Use a constructor property:

function Foo(bar) {}
Foo.infect = ['bar'];
// or Foo.inject = ['bar']; 

There are two return options.

  • type: an instance of type will be returned via new:
function Foo() {}
infector.register({ foo: { type: Foo } });

If you want the module to be returned as a singleton:

infector.register({ foo: { type: Foo, isSingleton: true } });
  • value: the registered value will be returned:
infector.register({ foo: { value: 'Foo' } });

Just do:

infector.get('foo');

A working example is available in the examples/browser dir. To view:

$ open examples/browser/index.html

A working example is available in the examples/node dir. To run:

$ node examples/node

In the browser:

$ make browser-test

In Node.js:

$ make test

To generate a coverage report:

$ make test-cov