di-ioc

    1.8.2 • Public • Published

    di-ioc

    NPM Version Build Status Coverage Status NPM Downloads License

    Dependency injection.

    Installation

    npm install --save di-ioc

    Example

    util/index.js

    module.exports = require('di-ioc').create()
     
    // Start defining a `random` service:
    .define('random', function () {
      var pseudoRandomBytes = require('crypto').pseudoRandomBytes;
     
      // The `random` service has one function:
      return {
        base64: function () {
          return pseudoRandomBytes(20).toString('base64');
        }
      };
    });

    app/index.js

    module.exports = require('di-ioc').create()
     
    // Greeting service which uses the random service: (arguments are detected)
    .define('greet', function (random) {
      return function (name) {
        console.log('Hello ' + name + '! Here is a random string: ' + random.base64());
      };
    });

    index.js

    module.exports = require('di-ioc').create(require)
    .use('./util')
    .use('./app')
     
    .init();
     
    var randomService = module.exports.util.random;
     
    // eQ/NZnl7qusVN9hB/3nCn3wFKfY=
    console.log(randomService.base64());
     
    // Hello World! Here is a random string: dfLGC20CpCJxAZSu+uFp57dlJl0=
    module.exports.app.greet();

    Features

    • Export to a standard object which automatically initialises dependencies as needed. This is the object .init() creates.
    • Enforce that dependency graph divides into layers. For example, nothing in the 'util' submodule can depend on services in the 'app' submodule, due to the order of definition.
    • Nest components in to hierarchial modules and folders.
    • Instantiate one sub-tree of the hierarchy for testing.
    • Instantiate objects with injected dependencies for unit testing.
    • Define transient objects, using require('di-ioc').create().transient('serviceName', ...);.

    Keywords

    none

    Install

    npm i di-ioc

    DownloadsWeekly Downloads

    1

    Version

    1.8.2

    License

    MIT

    Last publish

    Collaborators

    • aantthony