infector
v1.0.7 dependency injection node
Infector
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 oftype
will be returned vianew
:
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 registeredvalue
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
- This great article by Chad Perry: DIY-DI
- @vojtajina, whose injector recipe in node-di gave me ideas for module registration
- AngularJS, where the idea of how to specify dependencies to be injected came from
- Infector++, where the name for this component came from ;)