fontcolor_theme
Deepkit App

服务

服务是一个广义的概念,涵盖应用所需的任何值、函数或特性。服务通常是一个具有狭窄且明确目的的类。它应当专注于做好一件具体的事情。

在 Deepkit(以及大多数其他 JavaScript/TypeScript 框架)中,服务是通过提供者在模块中注册的一个简单类。最简单的提供者是类提供者(class provider),它只指定类本身而不包含其他内容。随后,该类会在其定义所在模块的依赖注入容器中成为一个单例。

服务由依赖注入容器管理与实例化,因此可以通过构造函数注入或属性注入,在其他服务、控制器以及事件监听器中导入并使用。更多细节参见依赖注入一章。

要创建一个简单的服务,你只需编写一个有明确职责的类:

export interface User {
    username: string;
}

export class UserManager {
    users: User[] = [];

    addUser(user: User) {
        this.users.push(user);
    }
}

然后将其注册到你的应用或某个模块中:

new App({
    providers: [UserManager]
}).run();

完成后,你就可以在控制器、其他服务或事件监听器中使用此服务。例如,我们在一个 CLI 命令或 HTTP 路由中使用它:

import { App } from '@deepkit/app';
import { HttpRouterRegistry } from '@deepkit/http';

const app = new App({
    providers: [UserManager],
    imports: [new FrameworkModule({debug: true})]
});

app.command('test', (userManager: UserManager) => {
    for (const user of userManager.users) {
        console.log('User: ', user.username);
    }
});

const router = app.get(HttpRouterRegistry);

router.get('/', (userManager: UserManager) => {
    return userManager.users;
})

app.run();

服务是 Deepkit 的基础构建块,并不局限于类。实际上,服务可以是应用所需的任何值、函数或特性。想了解更多,请参阅依赖注入一章。

English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)