Aurelia Typescript DI - 实例化 HTTP 获取
Aurelia Typescript DI - instantiate HTTP fetch
我无法通过 Aurelia TS 框架中有关依赖注入的基本示例。第一个困惑是首先在哪里实例化一个单例。例如,在 github 示例框架中,他们在 users.ts:
中实例化了 HttpClient
constructor(public http: HttpClient) {
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('https://api.github.com/');
});
}
但我不想在每个 class 中都这样做,所以我假设我会把代码放在 main.ts 中,因为应用程序启动时那是 运行。但是 main.ts 没有构造函数,当我尝试包含 @inject(HttpClient) 时它出错了。 main.ts 是否适合放置此代码?如果是,我该怎么做?
有什么想法吗?
我为 JS ( https://github.com/aurelia/dependency-injection/issues/73) 找到了一个类似的问题,并为 Typescript 修改了它,它似乎有效。这是我为任何需要它的人准备的东西。不确定这是否是最佳答案,但它正在运行:
main.ts
bootstrap((aurelia: Aurelia): void => {
aurelia.use
.standardConfiguration()
.developmentLogging();
var http: HttpClient = new HttpClient();
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('https://api.github.com/');
});
aurelia.container.registerInstance(HttpClient, http);
const rootElem = document.body;
aurelia.start().then(() => aurelia.setRoot('app', rootElem));
rootElem.setAttribute('aurelia-app', '');
});
您可以在 aurelia
对象上使用 container.get
方法从 main.ts:
中利用依赖注入容器
main.ts
import { HttpClient } from 'aurelia-http-client';
export function configure(aurelia) {
let httpClient = aurelia.container.get(HttpClient);
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('https://api.github.com/');
});
}
我无法通过 Aurelia TS 框架中有关依赖注入的基本示例。第一个困惑是首先在哪里实例化一个单例。例如,在 github 示例框架中,他们在 users.ts:
中实例化了 HttpClientconstructor(public http: HttpClient) {
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('https://api.github.com/');
});
}
但我不想在每个 class 中都这样做,所以我假设我会把代码放在 main.ts 中,因为应用程序启动时那是 运行。但是 main.ts 没有构造函数,当我尝试包含 @inject(HttpClient) 时它出错了。 main.ts 是否适合放置此代码?如果是,我该怎么做?
有什么想法吗?
我为 JS ( https://github.com/aurelia/dependency-injection/issues/73) 找到了一个类似的问题,并为 Typescript 修改了它,它似乎有效。这是我为任何需要它的人准备的东西。不确定这是否是最佳答案,但它正在运行:
main.ts
bootstrap((aurelia: Aurelia): void => {
aurelia.use
.standardConfiguration()
.developmentLogging();
var http: HttpClient = new HttpClient();
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('https://api.github.com/');
});
aurelia.container.registerInstance(HttpClient, http);
const rootElem = document.body;
aurelia.start().then(() => aurelia.setRoot('app', rootElem));
rootElem.setAttribute('aurelia-app', '');
});
您可以在 aurelia
对象上使用 container.get
方法从 main.ts:
main.ts
import { HttpClient } from 'aurelia-http-client';
export function configure(aurelia) {
let httpClient = aurelia.container.get(HttpClient);
http.configure(config => {
config
.useStandardConfiguration()
.withBaseUrl('https://api.github.com/');
});
}