This project will be supported:
- Ioc Container
- Lazy Dependencies loading
A Container is a single unit of dependency handling. It registers dependencies and resolves them for dependency consumers.
var container = require('nodejs-ioc-container').getContainer();
container.register(...
container.resolve(...
container.get(...
container.destroy();container.register('connection', connection);connection is either an object or a function that will return a connection object.
You cannot register functions that will depend on other dependencies - this you can do with v1.0.0 - https://github.com/dexter0201/nodejs-ioc-container/releases/tag/v1.0.0
Use get when you need to check if the dependency is registered, because get returns immediately.
container.get('connection', function(connection) {
if (!connection) {
} else {
}
});In the above example, if the get is called before connection is registered, you will get null.
If you have a function that needs a connection, use
container.resolve('connection', function(connection) {/*use connection*/});resolve also supports the "Array notation":
container.resolve(['connection', function (connection){/*use connection*/});and, of course, the "dependable notation":
container.resolve(function(connection) {/*use connection*/});tldr: if resolve gets a function as a first parameter, it will stringify/parse it to read the names of dependables you need.
You can register functions that will depend on other dependencies and chain dependency providers. For example, if you cannot provide a database without obtaining a configuration first, you register your database provider in the following manner:
container.register('database',function (configuration) {
//use the configuration to produce your database connection
var database = createDatabase(configuration);
//and finally
return database;
});