angular2依赖注入容器是否为独立使用而设计,是否可以将它用于typescript/javascript服务器端应用程序?
我在10月16日(https://github.com/angular/di.js/issues/108)在di项目上打开了一个问题,我想这应该是进入v2.显然这是不可能的.新的angular2 di有什么用?我可以使用js/es6/ts项目以独立方式使用它吗?
从Angular 2 RC.5开始,DI是@angular/core
封装的一部分.对于非Angular用途,它最近injection-js
被Angular团队的成员Minko Gechev 提取到包中.
这是一个简短的ES6,节点友好的例子:
// may not be needed for injection-js and recent @angular/core versions // if ES5-flavoured `Class` helper isn't used require('reflect-metadata'); const { Inject, Injector, ReflectiveInjector, OpaqueToken } = require('@angular/core'); // or ... = require('injection-js'); const bread = new OpaqueToken; const cutlet = new OpaqueToken; class Sandwich { constructor(bread, cutlet, injector) { const anotherBread = injector.get('bread'); injector === rootInjector; bread === 'bread'; anotherBread === 'bread'; cutlet === 'cutlet'; } } Sandwich.parameters = [ new Inject(bread), new Inject(cutlet), new Inject(Injector) ]; const rootInjector = ReflectiveInjector.resolveAndCreate([ { provide: 'bread', useValue: 'bread' }, { provide: bread, useValue: 'bread' }, { provide: cutlet, useValue: 'cutlet' }, Sandwich ]); const sandwich = rootInjector.get(Sandwich);
似乎有人最近(2017年1月)从Angular2中提取了依赖注入,这允许它在框架之外使用.
https://github.com/mgechev/injection-js
我对此表示怀疑,看起来它并没有被提取到组件中.有点令人遗憾的是像Angular这样的主要框架仍然采用这种单片方法,我更愿意看到像Symfony这样的面向组件的框架,但JavaScript尚未完全存在.
与此同时,你的InversifyJS看起来并不坏看.