0.2.0 • Published 11 years ago

woodpecker v0.2.0

Weekly downloads
2
License
MIT
Repository
github
Last release
11 years ago

woodpecker

A lightweight dependency injection framework

build status Code Climate Test Coverage

Installation

npm install woodpecker --save

Usage

Register a service

var woodpecker = require('woodpecker');

// Simple logger service function
function Logger() {
  this.log = function(msg) {
    console.log(msg);
  }
}

// The service will be registered under the name 'logger'. Works only with named function
woodpecker.service(Logger);

// Use custom names
woodpecker.service('myService', Logger);

Request a service

// Request service
var serviceInstance = woodpecker.service('logger');

// Now the service can be used
serviceInstance.log('Hello World');

Using the dependency injection

// Create some functions
function Logger() {
  this.log = function(msg) {
    console.log(msg);
  }
}

function UserDAO() {
  this.getUser = function(id) {
    return {
      id: id,
      name: 'Theo',
      age: 28
    }
  }
}

// The required service instances will be automatically injected, if the parameter names match the registered services
function UserService(logger, userDAO) {
  this.print = function() {
    logger.log(userDAO.getUser().name);
  }
}

// Register the services
woodpecker.service(Logger);
woodpecker.service(UserDAO);
woodpecker.service(UserService);

// Load the service. Required services (logger and userDAO) will be injected
var userService = woodpecker.service('userService');

// Use the service
userService.print();

Using proxy services

Proxy service always holds the current registered service. To get an proxy instance surround the service name with '$' (e.g. $logger$ for a service named 'service').

// Register a service which use a service named looger
function ServiceWithProxy($logger$) {
  this.hello = function() {
    return $logger$.log('Hello');
  }
}

// Register a service named logger
woodpecker.service('logger', function() {
  this.log = function(msg) {
    console.log(msg.toLowerCase());
  }
});

// Use the service
var serviceWithProxy = woodpecker.service('serviceWithProxy');
serviceWithProxy.hello() // prints 'hello' on console

// Register a new service named logger
woodpecker.service('logger', function() {
  this.log = function(msg) {
    console.log(msg.toUpperCase());
  }
});

serviceWithProxy.hello() // prints 'HELLO' on console

Credits

Theo Pack

0.2.0

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago

0.0.9

11 years ago

0.0.8

11 years ago

0.0.7

11 years ago

0.0.6

11 years ago

0.0.5

11 years ago

0.0.4

11 years ago

0.0.3

11 years ago

0.0.2

11 years ago

0.0.1

11 years ago