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