Nest初探(一)

149 阅读2分钟

简介

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鉴权的文章

参考资料