跳至主要內容

初体验Nest.js

刘春龙原创...大约 3 分钟NodejsNestjs教程文档

Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。

在底层,Nest 构建在强大的 HTTP 服务器框架上,例如 Express (默认),并且还可以通过配置从而使用 Fastify

Nest 在这些常见的 Node.js 框架 (Express/Fastify) 之上提高了一个抽象级别,但仍然向开发者直接暴露了底层框架的 API。这使得开发者可以自由地使用适用于底层平台的无数的第三方模块。

开始之前,你可以使用 Nest CLI 创建项目,也可以克隆一个 starter project(两者的结果是一样的)。

警告

请确保在您的操作系统上安装了 Node.js (>= 10.13.0,v13 除外)。

首先创建一个全新的nestjs项目

# 全局安装
npm i -g @nestjs/cli
# 创建项目
nest new project-name
# 启动
npm run start:dev
# 打包
npm run build

这样,一个全新的nestjs项目就创建成功了

此时,打开浏览器并导航到 http://localhost:3000/ 地址。

src目录简介

app.controller.ts带有单个路由的基本控制器。
app.controller.spec.ts针对控制器的单元测试。
app.module.tsT应用程序的根模块(root module)。
app.service.ts具有单一方法的基本服务(service)。 method.
main.ts应用程序的入口文件,它使用核心函数 NestFactory 来创建 Nest 应用程序的实例。

说名

app.service.ts 主要用类来书写业务逻辑
app.controller.ts 主要用来规划路由实现方式

简单修改

  1. 删除根目录下的test文件夹(测试文件,删掉即可)

  2. 进入src目录,删除app.controller.spec.ts文件(测试文件,删掉即可)

  3. 修改app.controller.ts文件,在@Controller()装饰器里添加api变成@Controller("api"),此时,打开浏览器并导航到 http://localhost:3000/api/ 地址。

  4. 在此基础上进行修改,在 @Get()装饰器里增加v1变成Get("v1"),此时,打开浏览器并导航到 http://localhost:3000/api/v1/ 地址。

    import { Controller, Get } from '@nestjs/common';
    import { AppService } from './app.service';
    
    @Controller("api")
    export class AppController {
      constructor(private readonly appService: AppService) { }
    
      @Get("v1")
      getHello(): string {
        return this.appService.getHello();
      }
    }
    



     



     




  5. 现在,我们把app.service.ts文件修改,如下:此时,打开浏览器并导航到 http://localhost:3000/api/v1/ 地址。

    import { Injectable } from '@nestjs/common';
    @Injectable()
    export class AppService {
      getHello(): string {
        return 'Hello 12345678910';
      }
    }
    




     


  6. 新增一个v2接口,访问http://localhost:3000/api/v2/ 地址。

    import { Controller, Get } from '@nestjs/common';
    import { AppService } from './app.service';
    
    @Controller("api")
    export class AppController {
      constructor(private readonly appService: AppService) { }
    
      @Get("v1")
      getHello(): string {
        return this.appService.getHello();
      }
    
      @Get("v2")
      getHi(): string {
        return this.appService.getHi();
      }
    }
    












     
     
     
     

    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class AppService {
      getHello(): string {
        return 'Hello World!';
      }
      getHi(): string {
        return 'Hi World!';
      }
    }
    







     
     
     

    通过以上操作不难发现,controller层主要控制路由等相关操作,而service层则是具体的业务逻辑。

语法检查和格式化

为了确保最大的稳定性和可扩展性,我们使用基础 eslintprettier cli 软件包。 此设置允许 IDE 在设计上与官方扩展完美集成。

对于 IDE 不相关的无头环境(持续集成、Git 钩子等),Nest 项目附带了即用型 npm 脚本。

# 语法检查
npm run lint

# 格式化
npm run format
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7