william.chan's blog

done is better than perfect

AOP 架构

AOP的好处是可以把一些通用逻辑分离到切面中,保持业务逻辑的纯粹性,这样切面逻辑就可以复用,还可以动态增删

MVC 架构 在 MVC 架构下,请求会先发送给 controller,由 controller 调度 model 层的 service 来完成 业务逻辑,然后,返回对应的 view。 在这个流程中,nest 还提供了 AOP(Aspect Oriented Programming)的能力,也就是面向切面编程的能力。 后端框架基本都是 AOP 架构 QA: ruby ...

Nest 全局模块和生命周期

避免重复 imports。支持在创建和销毁时执行一些逻辑。

全局模块 module 导出 provider,另一个 module 需要 imports 它才能用这些 provider。 如果这个模块被很多模块依赖,那每次都要 imports 就很麻烦。 能不能设置成全局的,它导出的 provider 直接可用呢? 1.常用引入模块方式 在 AaaModule 里指定 exports 的 provider 然后,在 BbbModule ...

Nest providers 4种类别

使用多种 provider,灵活注入对象

providers Nest 实现了 IoC 容器,会从入口模块开始扫描,分析 Module 之间的引用关系,对象之间的依赖关系, 自动把 provider 注入到目标对象 什么是provider 被 @Injectable() 修饰的 class 在 @Module() 的 providers 中声明 示例 AppService 1.useClass 上面...

Nest项目断点调试

查看代码整个执行路线 - 作用域,调用栈 - 通过单步执行查看变量变化

在 VSCode 里边写代码边调试 最方便调试 nest 项目的方式 VSCode 实现了 Debugger 客户端 创建 .vscode/launch.json 文件 然后,输入node快速创建一个 node 调试配置 stopOnEntry 是在首行断住,和 –inspect-brk 一样的效果。 调试过程中修改了代码,点击重新调试,可以马上看到改动之...

IoC 解决了什么问题?

IoC 使开发者免去手动创建和组装对象的麻烦,改成声明依赖,让工具自动创建组装对象

nestjs 中有很多对象 Controller 对象,接收 http 请求,调用 service,返回响应 Service 对象,实现业务逻辑 Repository 对象,实现对数据库的增删改查 数据库连接对象 DataSource 配置对象 Config 对象间关系复杂 Controller 依赖 Service 实现业务逻辑 Service 依赖...

5种 HTTP 数据传输方式

给接口传递参数的5种方式

url param - 路径中参数 将参数写在 url 中 1 2 3 4 /users/:id # /users/1 query string 通过 url 中 ?,后面的用 & 分隔的字符串传递数据 1 2 3 /users?name=cwy007&age=34 query-string form-urlencoded 直接用 form 表单提...

nest 命令

@nestjs/cli 工具使用方法

@nest/cli 工程化 nest new 创建项目 nest g 生成代码 nest build 编译构建 nest watch 开发时 live-reload nest info 查看项目信息 直接 npx 执行,npm 会把它下载下来,然后,执行 1 npx @nestjs/cli new 项目名 推荐:安装到全局,然后,执行 1 2 3 4 5 ...

一张后端架构图

学习各种后端中间件

后端中间件 mysql redis RabbitMQ Nacos ElasticSearch … 设计模式 nestjs 中用到的适配器设计模式 Nest 内构建复杂对象很多地方都用到了 builder 的设计模式 设计模式之美 113 - todo nestjs 概念图解 请求一般会传递json数据,通过 dto - data tran...

命令行

命令行常用的指令

根据端口查询运行的程序PID 1 2 3 4 lsof -i :5173 kill -9 xxxx

cool website

frontend https://browserify.org/