0.0.8 • Published 10 years ago

vessel v0.0.8

Weekly downloads
-
License
-
Repository
-
Last release
10 years ago

Vessel

Vessel is a simple IOC container for browser or Node.js.

Usage

import Vessel from 'vessel';
import { LIFETIME_SCOPE } from 'vessel';
      
// *** GreetingGenerator
class GreetingGenerator {
  constructor(template) {
    this._template = template;
  }

  create(name) {
    return this._template.replace('%s', name);
  }
}

// *** LoggingGreetingGenerator
class LoggingGreetingGenerator {
  constructor(logger, instance) {
    this._logger = logger;
    this._instance = instance;
  }

  create(name) {
    this._logger.info('Enter: GreetingGenerator.create(%s)', name);
    var output = this._instance.create(name);
    this._logger.info('Exit: GreetingGenerator.create(%s) -> %s', name, output);
    return output;
  }
}

// *** Wire up
Vessel.instance()
    .value('greetingTemplate', 'Hello, %s!')
    .value('logger', console)
    .factory('standardGreetingGenerator', [
        'greetingTemplate',
        template => new GreetingGenerator(template)
    ])
    .factory('greetingGenerator', [
        'logger',
        'standardGreetingGenerator',
        (logger, instance) => new LoggingGreetingGenerator(logger, instance)
    ]);

// *** Run
var greetingGenerator = Vessel.instance().resolve('greetingGenerator'),
    greeting = greetingGenerator.create('world');

console.log(greeting);

Running the script will write the following to the console:

Enter: GreetingGenerator.create(world)
Exit: GreetingGenerator.create(world) -> Hello, world!
Hello, world!

Samples

Sample code for the browser or Node.js is in the folder .\sample

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

11 years ago

0.0.3

11 years ago

0.0.2

12 years ago

0.0.1

13 years ago

0.0.0

13 years ago