var container = require('container');
var Service = require('модуль_сервиса');
container.serviceA = function () { return new Service(); }; // новый объект каждый раз
container.serviceB = container.share(function () { return new Service(); }); // один и тот же объект при вызове
container.get('сервисN'); // доступ к сервису
Запустить тесты можно из консоли:
npm test
При создании единственного экземпляра сервиса можно было бы написать так:
container.newService = new Service();
...
console.log(container.newService); // возвращается тот же объект
Но! В таком случае объект создается еще на стадии определения сервиса, даже если он не будет нужен.
Преимущество асинхронного подхода через функцию share()
- создание единственного объекта при первом обращении через get()
и последующее его использование. Если же обращений за цикл request-response не было, объект создан не будет.
container.newService = function () {
console.log(this); // this - объект container
};