DI Container for Google Closure with automatic registration and strongly typed object graph resolving.
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
This plugin requires Grunt
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
In your project's Gruntfile, add a section named
closure_dicontainer to the data object passed into
gruntinitConfigclosure_dicontainer:app:options:// Name for generated DI container class.// goog.require('app.DiContainer');name: 'app.DiContainer'// What should be resolved.// new app.DiContainer().resolveApp()resolve: 'App'// Prefix for deps.js.prefix: '../../../../'files:'client/app/build/dicontainer.js': 'client/deps.js'
Generated DI container name.
Array of types to be resolved.
How to use DI container in your app with various resolving configurations.
###*@fileoverview App main method.###googprovide 'app.main'googrequire 'app.DiContainer'= ->container =containerconfigureresolve: Appwith: element: documentbodyresolve: estestorageStorageas: estestorageLocalresolve: foouiLightbox:lightboxsetSomethingresolve: fooIFoo: ->app = containerresolveAppappstartgoogexportSymbol 'app.main'appmain
Add grunt-closure-dicontainer task after deps.js generation task.
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.
- Dependency Injection in .NET
- 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)