grunt-closure-dicontainer
Dependency Injection Container for Google Closure Library
- concise api (resolve A as B with C by D)
- automatic types registration
- resolving based on strong types parsed from annotations
- run-time configuration
- advanced mode compilation friendly
Getting Started
This plugin requires Grunt ~0.4.1
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-closure-dicontainer --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt;
The "closure_dicontainer" task
Overview
In your project's Gruntfile, add a section named closure_dicontainer
to the data object passed into grunt.initConfig()
.
grunt
Options
options.name
Type: String
Default value: 'app.DiContainer'
Generated DI container name.
options.resolve
Type: Array.<string>
Default value: ['App']
Array of types to be resolved.
options.prefix
Type: String
Default value: '../../../../'
Prefix for deps.js
processing.
Usage Example
How to use DI container in your app with various resolving configurations.
###* @fileoverview App main method.### googprovide 'app.main' googrequire 'app.DiContainer' = -> container = containerconfigure resolve: App with: element: documentbody resolve: estestorageStorage as: estestorageLocal resolve: foouiLightbox : lightboxsetSomething resolve: fooIFoo : -> app = containerresolveApp appstart googexportSymbol 'app.main'appmain
Add grunt-closure-dicontainer task after deps.js generation task.
Container Configuration
There is a pattern: Resolve A as B with C by D.
A is type to be resolved. B is optional type to be returned. C is optional object for run-time configuration, where key is argument name and value is runtime value. D is optional factory method.
Available in Este soon. Stay tuned.
More About DI
- kozmic.net/2012/10/23/ioc-container-solves-a-problem-you-might-not-have-but-its-a-nice-problem-to-have
- ayende.com/blog/2887/dependency-injection-doesnt-cut-it-anymore
- ayende.com/blog/4372/rejecting-dependency-injection-inversion
- Dependency Injection in .NET
Release History
- 2014-01-01 v0.4.0 Add interface resolving.
- 2013-12-22 v0.3.0 Add resolving rules rule.as and rule.by.
- 2013-12-17 v0.2.2 Work in progress, not yet officially released. (Pre-release announcement)