Naturally Pacifist Marsupials
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    node-service-locatorpublic

    node-service-locator

    service locator for node js

    Allow to load instanse of service with injected dependency of other service. Service dependencies are described in declarative way. Locator is a singletone so you can register services ones and then use it everywhere in your app

    Install

    npm install node-service-locator
    

    Usage

    Simple Services

    Lets assume that we have a folder 'Services' in project and and file Logger with logger service in it.

    // Services/Logger.js
     
    exports.log = function (msg) {
      console.log(msg);
    };
     

    Service description example

    // services.js file
     
    module.exports = {
        "logger": {
            "path": "Services/Logger"
        }
    }

    Usage Example

    var serviceList = require('./services');
     
    var basePath = __dirname;
     
    var locator = require('node-service-locator');
    locator.init(serviceList, basePath);
     
    //load simple object
    var logger = locator.get('logger');

    Servise as a constructor function

    // Services/ClassLogger.js
     
    var ClassLogger = function (errorLevel) {
        this.level = errorLevel || "debug";
    };
     
    ClassLogger.prototype.log = function(message) {
        console.log(this.level, message);
    };
     
    module.exports = ClassLogger;
     

    In order to return from locator an instance of this service you should add instantiate and parameters keys to service description

    "warningLogger": {
        "path": "Services/ClassLogger",
        "instantiate": true,
        "params": ["warning"]
    }

    And than in you app:

    var warningLogger = locator.get('warningLogger');
     
    warningLogger.log('Alarm!');
     

    Also you have possibility to pass one service as a parameter to anather to do this add '@' to service name in the params field

    "ClassWithWarningLogger": {
        "path": "Services/ClassWithWarningLogger",
        "instantiate": true,
        "params": ["foo", "@warningLogger", 23]
    }

    Also you can register some services on th fly

    locator.register('foo', {name: 'foo'});
     
    console.log(locator.get('foo').name);
    // => foo

    Invoke some function with services as parameters

    locator.register('foo', {name: 'foo'});
     
    locator.invoke('foo', 'logger', function (foo, logger) {
        logger.log(foo.name);
    });
     
     
    // => foo

    LICENSE

    MIT

    More examples in example folder

    Keywords

    none

    install

    npm i node-service-locator

    Downloadsweekly downloads

    15

    version

    0.0.2

    license

    none

    repository

    githubgithub

    last publish

    collaborators

    • avatar