什么是 NestJS?它有什么优点和特点?
Nest.js是用于构建高效且可伸缩的服务端应用程序的渐进式 Node.js 框架,
优点:
- 完美的支持typescript,因此可以使用日益繁荣的ts生态工具
- 兼容 express 中间件,因为express是最早出现的轻量级的node server端框架,nest.js能够利用所有express的中间件,使其生态完善
- 层层处理,一定程度上可以约束代码,比如何时使用中间件、何时需要使用guards守卫等
- 依赖注入以及模块化的思想,提供了完整的mvc的链路,使得代码结构清晰,便于维护
什么是依赖注入(DI)?在 NestJS 中如何使用 DI?
依赖注入是一种控制反转IOC(inversion of control)技术,就是你可以把对象或依赖的实例化交给IOC容器去处理,在NestJS中这个容器就是NestJS的运行时系统。当需要一个对象实例的时候,我们不需要自己手动new xxxClass(),只需要在合适的地方对类进行注册,在需要用到的地方直接注入,容器将为我们完成new的动作,这为我们省了很多事。最突出的应用场景就是单例模式的运用,很多我们要用到的方法服务都会封装在一个类中,比如与数据库打交道的各个Service类,调用这些服务方法都需要通过服务类实例进行调用。
Nestjs当中的Module就是IOC的体现。
- providers 依赖的service
- imports 依赖别的模块的service
- export 想要暴露的自身的service
- controllers 模块路由
如何在 NestJS 中创建控制器(controller)和服务(service)?
如何在 NestJS 中实现中间件(middleware)?
什么是管道(pipe)?如何在 NestJS 中实现管道?
如何在 NestJS 中使用拦截器(interceptor)?
如何在 NestJS 中进行数据验证(data validation)?
如何在 NestJS 中实现身份验证(authentication)和授权(authorization)?
如何在 NestJS 中处理异常(exception)和错误(error)?
如何在 NestJS 中使用 WebSocket?
如何在 NestJS 中使用 GraphQL?
如何在 NestJS 中进行测试(testing)?
什么是 NestJS 中的模块(module)?如何在 NestJS 中创建和使用模块?
如何在 NestJS 中使用 TypeORM 进行数据库操作?
如何在 NestJS 中使用 Mongoose 进行 MongoDB 数据库操作?
如何在 NestJS 中使用 Swagger 自动生成 API 文档?
如何在 NestJS 中使用 gRPC 实现微服务通信?
如何在 NestJS 中实现缓存(cache)功能?
如何在 NestJS 中进行日志记录(logging)?
如何在 NestJS 中使用微服务(microservices)进行分布式系统开发?
什么是 NestJS 中的全局拦截器(global interceptor)?如何在 NestJS 中使用全局拦截器?
如何在 NestJS 中使用 Passport 实现多种身份验证策略?
如何在 NestJS 中使用 JWT 进行身份验证?
如何在 NestJS 中使用 ACL 进行授权管理?
如何在 NestJS 中使用 WebSockets 进行实时通信?
如何在 NestJS 中使用 Redis 实现高性能缓存?
如何在 NestJS 中实现异步任务(asynchronous task)?
如何在 NestJS 中使用 AWS Lambda 进行无服务器开发?
如何在 NestJS 中使用 Docker 进行容器化部署?
如何在 NestJS 中使用 Kubernetes 进行容器编排和部署?
什么是 NestJS 中的异步模块(async module)?如何使用异步模块?