Nest是一套基于Node.js的强大的Web框架,可帮助你轻松构建出高效的、可扩展的应用程序。它是通过结合OOP(面向对象编程)和FP(函数式编程)的最佳理念,采用现代化JavaScript,使用TypeScript构建的。
安装
Git
$ git clone https://github.com/kamilmysliwiec/nest-typescript-starter.git project
$ cd project
$ npm install
$ npm run start
npm
npm i --save @nestjs/core @nestjs/common @nestjs/microservices @nestjs/websockets @nestjs/testing reflect-metadata rxjs
nest@cli
$ npm i -g @nestjs/cli
理念
Javascript是一门非常神奇的计算机语言。它不再是一门只能在浏览器上创建简单动画的语言。现在,前端领域已经开发出了多种绝妙的高性能的框架/库,例如Angular、React 和 Vue, 这些工具大大地提高了我们的开发进程,并且使我们的应用程序变得快速而灵活。
通过Node.Js,我们可以在服务器端使用JavaScript。虽然现在有很多基于Node的库、助手和工具,但是没有任何一个可以解决主要问题-结构体系问题。
特色
1.便于学习-语法结构类似Angular。
2.基于TypeScript构建,同时兼容普通的ES6(强烈建议使用TypeScript).
3.基于著名的(Express/Scoket.io)库,所以可以分享经验。
4.非常有用的依赖注入,内置控制反转容器。
5.分层注入器器—通过使用类型注入创建可重用、松耦合的模块,从而在应用程序中增加抽象性。
6.WebScokets模块(基于scoket.io,虽然你可以使用任何其他使用适配器的库。
7.独特的模块化系统(将你的系统分割成克重用的模块)。
8.消息类型支持的反应微服务(内置transport属性,决定使用TCP或者Redis,但是你可以选择使用任何其他使用CustomTransportStrategy的交流形式)。
9.异常处理layer,异常过滤器,同步和异步pipes layer。
10测试工具
核心概念
Nest的核心概念是提供结构系统,帮助开发只实现最大分层,并提高应用程序的抽象性。
它潜力无限,但是无法解决你的问题。它不仅仅是一套事先准备好的有行为的类,它提供了一套组织现代化应用程序的理念,这种理念使你能够专注与应用程序逻辑。
应用程序构建块 Nest有三种基本的应用程序构建块:模块,控制器,组件。
模块
模块是一个带有 @Module({})
装饰器的类。该装饰器提供元数据,框架使用该元数据组织应用程序结构。 以下是一个简单模块的所有可用属性:
@Module({
modules [ TestModule ],
controllers: [ TestController ],
components: [ TestComponent ],
exports: [ TestComponent ]
})
export class ApplicationModule {}
默认情况下,模块封装每一个依赖,也就是说模块只能在其内部使用组件/控制器。 我们可以将组件实例导出(只有组件可以被导出),这样模块之间就可以共享组件实例了。
控制器
控制层负责处理传入的HTTP请求。控制器是一个带有@Controller()
装饰器的类。
@Controller()
class UsersController {
@Get('users')
getAllUsers(@Res() response) {
res.status(201).json({});
}
}
组件
几乎所有的事物都可以被看作一个组件--Service, Repository, Provider
等。可以通过构造函数将组件注入到控制器或者另一个组件中。
@Component()
class UsersService {
getAllUsers() {
return [];
}
}