NestJS 是一个用于开发高效、可扩展的 Node.js 服务器端应用程序的框架。其优雅的 TypeScript 支持和深度集成的系统模块,使得开发复杂的后端服务变得前所未有的简单。在这篇文章中,我们将介绍 NestJS 的基础知识,帮助你快速入门。
以下准备工作是 nestjs 运行的基础环境,如果你已经学习或了解了nodejs相关的知识以及开发设备已经成功安装了Node环境和开发IDE,请忽略这部分内容。
shellnpm install -g @nestjs/cli 或者 pnpm install -g @nestjs/cli
shellnest new your-custom-project-name
shellnpm run start
浏览器访问 http://localhost:3000
nestjs 脚手架生成的最基础的项目包含如下文件列表
shell├── package.json ├── pnpm-lock.yaml ├── 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
文件介绍:
imports
,controllers
,providers
,exports
等。⛱️ 当我们尝试新鲜事物时,给自己制定一些简单容易实现的目标然后实现它,通过成就感不断的刺激,才会让我们能够坚持深入使用并掌握它。
实现如下HTTP接口
URL | /api/user |
---|---|
Method | GET |
Request | { “name”:”levenx” } |
Response | { “code”:0, “message”:”ok”, “data”:{ “name”:”levenx” } } |
接口要求分析,前端通过/api/user接口的query参数携带name参数,接口按照要求格式返回即可。
修改app.controllers.ts文件代码内容
shellimport { Controller, Get, Query } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() export class AppController { @Get('/api/user') getUserName(@Query() query) { return { code: 0, message: 'ok', data: { name: query.name, }, }; } }
分析:
在浏览器中访问 http://localhost:3000/api/user?name=levenx,看看返回是否符合预期。
实现公共的service方法给多个HTTP接口使用,service方法的作用是在用户name前面加上 hi!
修改app.service.ts文件内容
javascriptimport { Injectable } from '@nestjs/common'; @Injectable() export class AppService { setHi(name: string): string { return `hi! ${name}`; } }
在app.controller.ts 中使用service方法
javascriptimport { Controller, Get, Query } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() export class AppController { ++ constructor(private readonly appService: AppService) {} @Get('/api/user') getUserName(@Query() query) { return { code: 0, message: 'ok', data: { ++ name: this.appService.setHi(query.name), }, }; } }
代码分析:
Nestjs 是一个非常强大的 Node 框架,它支持了很多能力丰富后端项目工程,本篇教程只是对Nestjs的浅尝辄止,后续我们继续深入Nestjs的更多方面。