从Express到Nestjs,谈谈Nestjs的设计思想和使用方法

本文介绍了Nestjs框架的设计思想,从依赖注入、装饰器和注解到洋葱模型的概念,包括middleware、Exception filters、Pipes、Guards和interceptors的使用。Nestjs兼容Express中间件,支持typescript,提供模块化和依赖注入,有助于构建清晰、可维护的后端服务。
摘要由CSDN通过智能技术生成

  最近已经使用过一段时间的nestjs,让人写着有一种java spring的感觉,nestjs可以使用express的所有中间件,此外完美的支持typescript,与数据库关系映射typeorm配合使用可以快速的编写一个接口网关。本文会介绍一下作为一款企业级的node框架的特点和优点。

  • 从依赖注入(DI)谈起
  • 装饰器和注解
  • nestjs的“洋葱模型”
  • nestjs的特点总结

原文在我的博客中: github.com/fortheallli…

欢迎star和fork

一、从依赖注入(DI)谈起

(1)、angular中的依赖注入

  从angular1.x开始,实现了依赖注入或者说控制反转的模式,angular1.x中就有controller(控制器)、service(服务),模块(module)。笔者在早年间写过一段时间的angular1.3,下面举例来说明:

var myapp=angular.module('myapp',['ui.router']);
myapp.controller('test1',function($scope,$timeout){}
myapp.controller('test2',function($scope,$state){}

复制代码

  上面这个就是angular1.3中的一个依赖注入的例子,首先定义了模块名为“myapp”的module, 接着在myapp这个模块中定义controller控制器。将myapp模块的控制权交给了myapp.controller函数。具体的依赖注入的流程图如下所示:

myapp这个模块如何定义,由于它的两个控制器决定,此外在控制器中又依赖于scope、timeout等服务。这样就实现了依赖注入,或者说控制反转。

(2)、什么是依赖注入

  用一个例子来通俗的讲讲什么是依赖注入。

class Cat{

}
class Tiger{

}
class Zoo{
  constructor(){
     this.tiger = new Tiger();
     this.cat = new Cat();
  }
}


复制代码

  上述的例子中,我们定义Zoo,在其constructor的方法中进行对于Cat和Tiger的实例化,此时如果我们要为Zoo增加一个实例变量,比如去修改Zoo类本身,比如我们现在想为Zoo类增加一个Fish类的实例变量:

class Fish{}

class Zoo{
  constructor(){
     this.tiger = new Tiger();
     this.cat = new Cat();
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值