简介
Nest 是一个用于构建高效,可扩展的 Node.js 服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持 TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。
在底层,Nest使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。Nest 在这些框架之上提供了一定程度的抽象,同时也将其 API 直接暴露给开发人员。这样可以轻松使用每个平台的无数第三方模块。
开始使用Nest
安装
第一步:安装官方脚手架工具,并创建一个新项目
npm i -g @nestjs/cli
nest new project-name
会让你选择想要使用的包管理工具,我这里用的是pnpm。你就可以得到以下结构的项目
├── src
│ ├── app.controller.spec.ts # 控制器单测文件
│ ├── app.controller.ts # 控制器
│ ├── app.module.ts # 模块
│ ├── app.service.ts # 服务
│ └── main.ts # 入口文件
├── test # 单测
│ ├── app.e2e-spec.ts
│ └── jest-e2e.json
├── tsconfig.build.json
├── tsconfig.json
├── README.md
├── nest-cli.json
├── package.json
├── pnpm-lock.yaml
controller:控制器是用于处理接收到的请求和响应请求的
service:服务层处理主要业务逻辑
运行
这里运行对应包管理工具的安装命令即可,这里用的是pnpm
pnpm i #安装依赖
pnpm start #启动服务
在浏览器输入 localhost:3000 即可看到浏览器输出 Hello World!,就可以说明你运行成功。
创建新模块
运行以下命令即可创建一个新的用户模块、控制器和服务
nest g mo user
CREATE src/user/user.module.ts (81 bytes)
UPDATE src/app.module.ts (308 bytes)
nest g co user
CREATE src/user/user.controller.ts (97 bytes)
CREATE src/user/user.controller.spec.ts (478 bytes)
UPDATE src/user/user.module.ts (166 bytes)
nest g s user
CREATE src/user/user.service.ts (88 bytes)
CREATE src/user/user.service.spec.ts (446 bytes)
UPDATE src/user/user.module.ts (240 bytes)
在以下两个文件中添加以下内容,就可以新增加一个模块和创建一个api
user.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class UserService {
getUserName() {
return 'user name';
}
}
user.controller.ts
import { Controller, Get } from '@nestjs/common';
import { UserService } from './user.service';
@Controller('user')
export class UserController {
constructor(private readonly userService: UserService) { }
@Get('name')
getUserName() {
return this.userService.getUserName();
}
}
这时候在浏览器中输入 http://localhost:3000/user/name,你会发现是404。
只需要重启一下服务或者使用 pnpm start:dev 命令用于监听文件变化自动重启服务。
再输入刚刚的url就可以返回 user name
后面我会发一篇nest连接数据库和JWT鉴权的文章