核心概念
The core concept of Nest is to provide an architecture, which helps developers to accomplish maximum separation of layers and increase abstraction in their applications.
Nest的核心概念是提供结构系统,帮助开发只实现最大分层,并提高应用程序的抽象性。
It has enormous potential, but does not solve problems for you. It is not just a set of prepared classes, with some behavior. It is an idea, which shows you how to organize modern application and enable you to focus on application logic.
它潜力无限,但是无法解决你的问题。它不仅仅是一套事先准备好的有行为的类,它提供了一套组织现代化应用程序的理念,这种理念使你能够专注与应用程序逻辑。
Application building blocks We have three basic application building blocks in Nest: Modules Controllers Components
应用程序构建块 Nest有三种基本的应用程序构建块
- 模块。
- 控制器。
- 组件。
模块
Module is a class with @Module({}) decorator. This decorator provides metadata, which framework uses to organize application structure. Simple module with all available properties:
模块是一个带有 @Module({})
装饰器的类。该装饰器提供元数据,框架使用该元数据组织应用程序结构。 以下是一个简单模块的所有可用属性:
@Module({
modules [ TestModule ],
controllers: [ TestController ],
components: [ TestComponent ],
exports: [ TestComponent ]
})
export class ApplicationModule {}
By default, modules encapsulate each dependency. It means, that it is not possible to use its components / controllers from another module. To allow different modules to share same instance of component (only components can be exported), we could simply exports it.
默认情况下,模块封装每一个依赖,也就是说模块只能在其内部使用组件/控制器。 我们可以将组件实例导出(只有组件可以被导出),这样模块之间就可以共享组件实例了。
控制器
The Controllers layer is responsible for handling incoming HTTP requests. Controller is a simple class with @Controller() decorator.
控制层负责处理传入的HTTP请求。控制器是一个带有@Controller()
装饰器的类。
@Controller()
class UsersController {
@Get('users')
getAllUsers(@Res() response) {
res.status(201).json({});
}
}
组件
Almost everything is a component - Service, Repository, Provider etc. and they might be injected to controllers or to another component by constructor (as in Angular).
几乎所有的事物都可以被看作一个组件--Service, Repository, Provider
等。可以通过构造函数将组件注入到控制器或者另一个组件中。
@Component()
class UsersService {
getAllUsers() {
return [];
}
}
Learn more about those building blocks in next sections.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论