Nest.js 学习笔记(一)

247 阅读2分钟

nestjs.webp

索引

学习是一件很长很长的事情,但是是收益很大很大的事情,每天进步一点点,一辈子就是无数的成长。学习也有方法,把一个大的知识分块,每次学习一块,不但学习了知识,还增强了信心,让我们有成就感,就坚持下来了,慢慢的就变强啦!

框架介绍

基于Node.js的框架主要有以下几个:

  • 基础框架,基本上还是以express、koa、Fastify.js等为主
  • egg.js,以MVC为架构的web框架
  • nest.js,以Ioc 控制反转作为核心概念的web框架,对typescript支持友好
  • nuxt.js,以Vue.js作为SSR服务端渲染核心的web框架,最新是Nuxt3(以Vue3为核心)
  • next.js,以React.js作为SSR服务端渲染核心的
  • Meteor.js,full-stack javascript平台,最大的特点是当数据发生改变的时候,所有依赖该数据的地方自动发生相应的改变。
  • Fastify.js,号称最快的node.js web框架,特点是内置了基于 JSON schema 的 validation 和 serialization,比JSON.stringify还快的json序列化算法,虽然是借助借助第三方库 ajv。
  • strapi.js,快速生成API接口的web框架,同时实现各种后端所需要的鉴权、权限、文件上传等轮子

开发准备

  1. 安装 node 版本 大于 14 就行 Node.js 下载地址

Hellow World

创建新项目

Nestjs 官网

1.npm 安装全局包

npm i -g @nestjs/cli

2.cli 创建新项目,选择 pnpm 版本,先看一下 pnpm 使用说明

nest new blog-nestjs

目录结构

MVC 结构

    src
      |- app.controller.spec.ts // controller 的测试文件
      |- app.controller.ts      // controller,路由和预处理
      |- app.module.ts          // module,为模块注册用
      |- app.service.ts         // service 真正的逻辑
      |- main.ts                // 程序入口

module

module_pic.webp

controller

controller_pic.webp

运行项目

  1. 安装依赖
pnpm i

2.运行项目

pnpm start:dev

3.浏览器访问项目 访问:http://localhost:3000/

生成 Nestjs 模块

nest 自带了命令直接生成符合 nestjs 模块格式的命令

nest g controller students
 nest g service students
 nest g module students

执行命令之后的目录格式

src
  |- app.controller.spec.ts
  |- app.controller.ts     
  |- app.module.ts         
  |- app.service.ts        
  |- main.ts               
  |- students/
        |- students.controller.spec.ts
        |- students.controller.ts     
        |- students.module.ts         
        |- students.service.spec.ts
        |- students.service.ts        

开发

// students.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class StudentsService {
    ImStudent() {
        return 'Im student';
    }
}
// students.controller.ts
import { Controller, Get } from '@nestjs/common';
import { StudentsService } from './students.service';

@Controller('students')
export class StudentsController {
    constructor(private readonly studentsService: StudentsService) {}
  
    @Get('who-are-you')
    whoAreYou() {
        return this.studentsService.ImStudent();
    }
}

浏览器访问: ✅ http://localhost:3000/students/who-are-you

下章会细化接口

完整实例可以在我的 Github 上找到

如果喜欢文章,不妨点个赞。

转载:郭先生的技术坞

链接:juejin.cn/post/700841…