Nest.js 教程
NestJS 介绍
NestJS 是一个精心制作的服务器端(后端)应用程序框架,以支持开发人员的生产力并让他们的生活更加快乐。
那么,它不仅是一个框架,它还是进入领域驱动设计,事件采购,微服务架构等先进工程概念领域的推动者。 所有软件包都以简单轻量级的形式打包,以便您可以选择 - 无论您决定使用整个框架还是仅重新使用其组件。
我是一个 PHP 编写的 Symfony 框架的粉丝。 在我的职业生涯中,我花了好几年的时间开发大型应用程序,它并没有让我失望。 它写得很好,作为一个客观的,具有良好文档的模块化 Web 框架,提供了良好的开发者体验。 与我描述 NestJS 完全一样。
Node.js 和包管理器 NPM 提供了功能全面的服务器端环境,灵活性强,运行速度极快,对开发人员来说具有巨大的灵活性,从而将开发到生产的时间缩短到几小时,而不是几天。
然而,尽管 Node.js 的优点很多,但它并不能解决最常见的问题,在我看来,这是最大的问题,所有的 NodeJS 现代框架似乎都没有受到熏陶 - 架构的灵活性。
有人可能会说 - 这不是决定项目架构的框架问题。 那么,我完全同意这一点,但是我们几乎在每个项目中都会看到一些众所周知的概念和模式。 在我看来,如果一个框架将开发人员推向了良好的架构决策,这是一件好事。
NestJS 到底是什么?
根据该项目的网站:
NEST 是构建高效,可扩展的 NodeJS 服务器端应用程序的框架。
这与 Node.js 语言相同,所以区别在哪里? 那么,重点是在细节:
它使用现代 JavaScript,使用 Typescript(保留与纯 JavaScript 的兼容性)构建,并结合了 OOP,FP 和 FRP 的元素。
就是这样。 Nest 框架以一种非常活跃的方式鼓励开发人员尝试,学习和使用一些著名的软件工程范例。这不仅是介绍性的口号 - 在项目文档中我们找到了很多示例,指导和代码源,以便我们可以在几分钟内在项目中使用它们。 此外,所有这些新词汇的 NestJS 给我们参考它背后的知识。 所以如果你不知道一些模式 - 不用担心,你将会顺利地完成整个过程。
一些特性
NestJS 是一个完全用 TypeScript 编写的框架(它也支持 JS),它很容易测试,并且带来了所有必要的东西,你总是但您不知道该选什么。
- 依赖注入容器 - NestJS 带有自己的 DiC,这是一个在 JavaScript 世界中似乎被遗忘的实用工具,但我真的不能没有它。 有一些解决方案像 Inversify 或 Bottle,但 NestJS 有自己的解决方案。 它也支持工厂注入。
- 模块化 - 在 NestJS 中,处于相同域边界内的应用程序的每个逻辑部分都是一个模块,它鼓励封装。
- 可测试性 - 由于引入了 DiC 和 Modularisation,您可以根据服务构建应用程序,使控制器的工作更容易进行测试。
- 使用 TypeScript 中 - 类型很好。 你可以给一个变量分配类型,减少可能出现的错误。
简单总结
- 完美支持 Typescript
- 面向 AOP 编程
- 支持 typeorm
- Node.js 版的 spring
- 构建微服务应用
相关资源
官方资源
文档
社区
中文教程
英文教程
- 现代 Node.js 框架简介
- NestJS Node Express - 教如何逐步使用 Nestjs
- 使用 Nest 构建 Web 应用程序
- 使用 Nest.js 和 Google Maps API 构建一个地理围栏 Web 应用程序
- 使用 Nest.js 和 Dialogflow 构建聊天机器人
- 使用 Nest.js 通过情绪分析构建实时评论
- 使用 Nest.js 构建具有情绪分析的聊天应用程序
- 使用 Nest.js 创建实时图形
- 使用 DataTables 和 Nest.js 构建实时表
- NestJS 基础 Auth 和 Sessions
- 使用 NestJS 和 Swagger 的 MEAN 技术栈
- NestJS Ideas API
- 使用 Nest.js 和 Ably 构建实时 Web 应用程序
- 视频教程 - 使用 NestJs,Angular 和 Angular Material 构建一个完整的博客
例子
- 官方示例
- nestjs+angular cnode - Angular + Nest.js 全栈
- nestjs-typeorm - Nestjs + typeorm 示例
- nestjs-graphql-angular - NestJS + graphql + angular 示例
- ChatServer - 使用 Nest 实现的 Chat App 的服务器端
- Nestjs API.ai - 在 Node.js中与 api.ai 交互
- Simple Todos - 基于 Nuxt.js💚 和 Nest Framework 的简单Web应用程序
- Realworld Example App - 使用 NestJS + TypeORM 构建的示例性后端API
- Mant - MongoDB Angular NestJS TypeScript 市场示例.
- REST Nestjs Postgres - 使用 Nest.js 和 Postgres 实现的 REST API
- Nest Permissions Seed - 一个简单的应用程序,演示了NestJS对权限的基本用法
- Angular Nestjs Rendering - 使用 NestJS 进行 Angular 5+ 服务端渲染
- Angular Contact Manager App - 使用 Angular,Nestjs,Mongoose,Passport,JWT的 联系人管理程序
- Books Library API - 一个带有 nestjs,mongoose,Passport,JWT 的 API
- Passport Auth Nestjs - 使用 nestjs 构建的 Passport 策略,集成了 oauth
- Lynx - 基于 NestJS 和 TypeORM 构建的 Opinionated Framework
- NestJS Ideas API - 使用 NestJS,PostgresQL 和 TypeORM构 建的 REST 和 GraphQL 服务端的实现
- Nestcloud Starter - 使用 nestcloud 快速启动微服务应用程序.
- Nodepress - 使用 Nest 的 Blog/CMS, RESTful API 服务端应用. 😎
- Serverless-Lambda-DynamoDB - 具有AWS Lambda,DynamoDB,DynamoDB Streams的完全无服务器生产应用程序。
- Passport Email Auth 入门项目,包括用于通过MongoDB和PassportJs进行用户电子邮件身份验证的API。
样例
- Nest 入门套件 - Nest + sequelize-typescript + JWT + Jest + Swagger
- Nest BFF - 使用 NestJS 的样板 BFF Web 应用程序启动项目。包括 CLI 和 MongoDB 迁移功能。
- Nestjs Template - 使用为 Docker 环境精心设计的生产可用 NestJS 模板,支持最新 TypeScript API
- MEAN Todo with NestJS - 一个使用 NestJS 和 Swagger 的简单 Todo 应用程序。包含授权/身份验证。
- NestJS Boilerplate 💡 - 具有可用身份验证,typeorm,env 配置和 swagger 的 Boilerplate。开始制作伟大事物所需的一切。🚀
- Awesome Nest Boilerplate 😍, Typescript 💪,Postgresql 🎉,TypeORM,Swagger for Api文档,角色基本访问控制和最佳应用程序架构。
- NestJS Prisma Starter - NestJS 的入门项目😻 包括带有 Prisma 客户端的 Graphql,Passport-JWT 身份验证,Swagger Api 和 Docker。
- TeanJS - TeanJS是一个入门程序,它为您提供所有方式,以便能够尽快开始编写代码😻
使用 NestJS 的项目
开源
- EVE Book API - :milky_way: EVE Book API
- Ever® - 电子商务平台。
- LXDhub - Linux 容器管理系统(LXC).
- Notadd - 微服务开发架构。
常用库
- 公用
- Nest CQRS - Nest 框架的轻量级 CQRS 模块
- Nestjs Config - 处理项目配置的一个很棒的模块
- Nest Consul Config - 从 consul kv 获取配置的模块
- Nest Consul Service - 基于 Consul 的 NodeJS 微服务解决方案,由 Typescript 语言和 NestJS 框架编写
- Nest Consul Loadbalance - 用于 Rest 的软件负载均衡器
- Nest Schedule - 装饰器实现的定时任务。
- Nest Queue - 基于 Redis 的简单队列管理,适用于您的应用程序
- nestjs bull - Nestjs 分布式消息队列
- 状态管理
- Ngrx Nest - 在 Nest 上使用 ngrx/store 和 ngrx/effects.
- 微信开发
- TNW WeChat 微信公众号开发脚手架,支持集成到任何基于 Node.js 的服务端框架
- 代码风格
- StyleGuide and Coding Conventions - 非官方的 TypeScript StyleGuide
- 工作流
- workflow-es 基于 Typescript 的工作流
- WebSockets
- 邮件
- Nest Mailer - Nest 框架的邮件模块
- API
- 中间件
- Nest Middlewares - NestJS 的通用可注入中间件
- Errors
- Nestjs Flub - 漂亮的错误😫 NestJS框架的Stack Viewer .
- Nest Raven - Nest.js 框架的 Sentry Raven 模块
- Lint
- Eslint Plugin Nestjs - 用于 nestjs 框架的 ESLint 规则
- 路由🚦
- Nest Router - Nestjs 框架的路由模块🚦 🚀 用于组织路由,创建路由树等。🚦 🚀
- Dialogflow :satellite:
- Nestjs Dialogflow - Dialog 流模块,使用 NestJS 简化 NLP 应用程序的 Web 钩子处理。
- 日志
- Nest Morgan - 用于 nestjs 的 Morgan 模块
- Nest Winston - 用于 nestjs 的 Winston 模块
- Nest Pino - 用于 nestjs 的 Pino 模块 ,😮在任意位置记录请求上下文😍
- 监控
- Nest Status Monitor - 基于 Socket.io 和 Chart.js 的简单自托管模块,用于报告 Nest.js 的 node.js 服务器的实时状态。
- 国际化
- Nest i18n - 在您的服务器上轻松添加 i18n 支持,内置丰富的格式化 api
集成
- Auth
- node-casbin - 支持 ACL, RBAC, ABAC 权限管理的 Nodejs 库
- Nestjs + Auth0 - 使用 Auth0 的 NestJS Framework Web 应用程序。
- 数据库
- Typeorm - 用于 Nest 框架的 TypeORM 模块 [Tutorial].
- hasura -Hasura 连接到您的数据库和微服务,并提供可用于生产的GraphQL API。
- prisma -Prisma 取代了传统的ORM。
- sequelize -传统 Node.js ORM
- Magnus 自动生成 grpc 及 graphql 的库。
- Nest Mongoose - 用于 Nest 框架的 Mongoose 模块
- Nest Typegoose - nest.js 的 Typegoose 模块。
- Nest Sequelize JWT - 入门套件 Nest + Sequelize + jwt。
- Nest sequelize-typescript - Nest + sequelize-typescript + JWT + Jest + Swagger
- GraphQL
- Nestjs Graphql - 实现 graphql 模块的 Nestjs 启动器。
- Pattern
- Nest GRPC Transport - NestJS 框架的 GRPC 传输层.
- Nestjs typeorm paginate - 一个简单的功能和分页界面
- 编辑器
- VSCode
- Nestjs Snippets - Vscode nestjs 代码片段
- VSCode
- AMQP
- Nestjs AMQP - amqp 连接管理器
- 支付网关
- Nestjs Braintree - 一个用于 webhooks 交易的模块。
- Notadd pay - 支持微信和支付宝支付。
- Consul
- Nest Consul - 基于 Consul 的 NodeJS 微服务解决方案,由Typescript 语言和 NestJS 框架编写
- Cache
- Nest Memcached - 用于 Nest 框架的 memcached 模块
运行
-
命令行 / 终端
- CLI - Nestjs 应用程序的 CLI 工具。
- Yeoman Generator - 用于 nestsjs 应用程序的自动生成器。
- Nestjs Console - 一个为应用程序提供 cli 的 Nestjs 模块。
更多… nestjs-awesome