node package manager

infector

Infector

build status coverage status npm version npm downloads dependency status devDependency status

browser support

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

Usage

Grab 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

Specify dependencies

Use a constructor property:

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

Register modules

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' } });

Get modules

Just do:

infector.get('foo');

Examples

Browser

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

$ open examples/browser/index.html

Node.js

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

$ node examples/node

Testing

In the browser:

$ npm run test-browser

In Node.js:

$ npm run test-spec

To generate a coverage report:

$ npm run test-cov

Credits