当前位置:  开发笔记 > 编程语言 > 正文

打字稿中的Angular2 DI.我们可以在node.js/non-angular项目中使用它吗?

如何解决《打字稿中的Angular2DI.我们可以在node.js/non-angular项目中使用它吗?》经验,为你挑选了3个好方法。

angular2依赖注入容器是否为独立使用而设计,是否可以将它用于typescript/javascript服务器端应用程序?

我在10月16日(https://github.com/angular/di.js/issues/108)在di项目上打开了一个问题,我想这应该是进入v2.显然这是不可能的.新的angular2 di有什么用?我可以使用js/es6/ts项目以独立方式使用它吗?



1> Estus Flask..:

从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);



2> Vincent Pang..:

似乎有人最近(2017年1月)从Angular2中提取了依赖注入,这允许它在框架之外使用.

https://github.com/mgechev/injection-js



3> Théo..:

我对此表示怀疑,看起来它并没有被提取到组件中.有点令人遗憾的是像Angular这样的主要框架仍然采用这种单片方法,我更愿意看到像Symfony这样的面向组件的框架,但JavaScript尚未完全存在.

与此同时,你的InversifyJS看起来并不坏看.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有