将 Horizon IO 导入 angular 2 项目的正确方法
Correct way to import Horizon IO into angular 2 project
我目前将 HorizonIO 导入我的 angular 2 项目的方式如下:
var horizon = require('@horizon/client');
@Injectable()
export class DbService {
private horizon;
constructor() {
this.horizon = Horizon({host: 'localhost:8181'});
}
}
现在我觉得这不是正确的方法,因为我应该能够
import { Horizon } from '@horizon/client';
虽然它没有抛出错误,但该变量不可用。
Thought/comments?
检查 @horizon/client
是否在您的 node_modules
文件夹中,如果不在:尝试 npm install
(https://www.npmjs.com/package/@horizon/client).
相当于
的 ES6 导入
var Horizon = require('@horizon/client');
是
import * as Horizon from '@horizon/client';
你所做的相当于
var Horizon = require('@horizon/client').Horizon;
编辑:
我现在使用以下代码使 horizon 可注射:
import { Injectable } from '@angular/core';
import * as Hz from '@horizon/client';
@Injectable()
export class Horizon extends Function {
private _hz;
constructor() {
super('...args', 'return this._hz(...args)');
this._hz = new Hz({host: 'localhost:8181'});
return this.bind(this);
}
}
然后可以像直接导入它一样注入和调用它:
constructor(hz: Horizon){
hz('messages').watch().subscribe(...);
}
不确定这是否比直接导入 Horizon 有任何好处,但使用 DI 感觉更有棱角。
我目前将 HorizonIO 导入我的 angular 2 项目的方式如下:
var horizon = require('@horizon/client');
@Injectable()
export class DbService {
private horizon;
constructor() {
this.horizon = Horizon({host: 'localhost:8181'});
}
}
现在我觉得这不是正确的方法,因为我应该能够
import { Horizon } from '@horizon/client';
虽然它没有抛出错误,但该变量不可用。
Thought/comments?
检查 @horizon/client
是否在您的 node_modules
文件夹中,如果不在:尝试 npm install
(https://www.npmjs.com/package/@horizon/client).
相当于
的 ES6 导入var Horizon = require('@horizon/client');
是
import * as Horizon from '@horizon/client';
你所做的相当于
var Horizon = require('@horizon/client').Horizon;
编辑:
我现在使用以下代码使 horizon 可注射:
import { Injectable } from '@angular/core';
import * as Hz from '@horizon/client';
@Injectable()
export class Horizon extends Function {
private _hz;
constructor() {
super('...args', 'return this._hz(...args)');
this._hz = new Hz({host: 'localhost:8181'});
return this.bind(this);
}
}
然后可以像直接导入它一样注入和调用它:
constructor(hz: Horizon){
hz('messages').watch().subscribe(...);
}
不确定这是否比直接导入 Horizon 有任何好处,但使用 DI 感觉更有棱角。