Injectoid helps you to compose your app using modules
npm:
npm install injectoid
browsers:
Should work with require.js and common.js (not tested)
or
Works as global Injectoid
constructor
var Injectoid = require('injectoid').Injectoid;
var app = new Injectoid();
app.provide('logger', function() {
var log = function(arg) {
console.log(arg);
};
return {
log: log
};
});
app.provide('messageHandler', function(logger) {
var handleMessage = function(message) {
//some real code here
logger.log(message);
};
return {
handleMessage: handleMessage
};
});
Creates new Injectoid instance. Should be used with new
var app = new Injectoid();
Adds module to app with specified moduleName
.
-
moduleName: [string]
. Used to name module in an app. -
provider: [function | object | value]
. Can be a factory function, or just plain JavaScript value/object.-
If function form is used, DI feature becomes available.
-
NOTE: function MUST return some value/object, so module can be treated as available.
-
Required modules become available as arguments of
provider
function. -
If some required modules are not available,
provider
function is put into a queue, until all required modules are available.
-
-
If value/object form is used, module gets immediately available as
moduleName
-
Calls resolvable
with resolved modules. Useful if you need to obtain a reference to some module, or call something just once.
resolvable: [function]
. Called with resolved modules as arguments.- If some required modules are not available,
resolvable
function is put into a queue, as inapp.provide
case.
- If some required modules are not available,
MIT © Yury Solovyov