Getting Started with crate-js
This page will help you get started with crate-js. You'll be up and running in a jiffy!
Introduction
Crate is an Dependency Injection library, that is loosely inspired by Symfony's Dependency Injection Component.
To get started, install crate via NPM;
npm install --save crate-js
Crate gets transpiled with Babel, so, as far as I know, it works in most node versions.
Simple Example
You can get started with a dead simple example below:
var ContainerBuilder = require('crate-js').ContainerBuilder,
fooService = require('./fooService'),
barService = require('./barService'),
bazService = require('./bazService'),
EventEmitter = require('events').EventEmitter,
container = ContainerBuilder.buildFromJson({
parameters: {
someParameterName: "foo",
bar: "baz" // Comments are allowed!
},
services: {
dispatcher: {module: EventEmitter},
foo: {module: fooService, args: ['@dispatcher']},
bar: {module: barService, args: ['@foo', '%someParameterName%']},
baz: {module: bazService, args: ['%bar%']}
}
});
container.get('dispatcher').emit('some-event');
container.getParameter('someParameterName') // === 'foo'
Loader Example
You can also use a JSON file loader, to load multiple js/json configs in.
// services.js
module.exports = {
services: {
dispatcher: {module: require('events').EventEmitter}
}
}
// parameters.js
module.exports = {
parameters: {
someParameter: 'someParameter'
}
}
var ContainerBuilder = require('crate-js').ContainerBuilder,
JsonLoader = require('crate-js').JsonLoader,
loader = new JsonLoader();
loader.addFile(require('./parameters'));
loader.addFile(require('./services'));
containerBuilder.addLoader(loader);
container = ContainerBuilder.build();
container.get('dispatcher').emit('some-event');
container.getParameter('someParameter') // === 'someParameter'
Updated less than a minute ago