Javascript

nestjs搭建通用业务框架(1):基础介绍

本文主要是介绍nestjs搭建通用业务框架(1):基础介绍,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

在网上看了很多关于nestjs的文章发现大多数的文章不成体系。所以打算从应用角度带领大家一点点的学习nestjs并架构一套可通用的业务框架方便大家入门。

本篇是nestjs上手的基础篇主要从以下的几个角度来谈一谈

  • What什么是nestjs

  • Where什么时候应用nestjs或者说什么场景下用它

  • Why为什么要用nestjsnestjs可以与哪些技术集成官方提供了哪些现成的方案

  • How怎么入手基础的搭建与入门


nestjs是什么

官方定义

下面我们用一张图片来引入这是nestjs官网的截图

http://img2.sycdn.imooc.com/604f1cf40001fac413060626.jpg

其中有对nestjs的定义

Hello, nest!

A progressive Node.js framework for building efficient, reliable and scalable server-side applications.

翻译过来就是用于构建高效且可伸缩的服务端应用程序的渐进式 Node.js 框架。

从上面定义我们可以拆解出来nestjs框架的一些基础的特性

  • Node.js首先它基于Node.js的环境是对前端友好的。前端工程师无需再继续学习其他的语言PS: 不代表不需要了解框架即可以上手

  • 服务端应用程序nestjs基础的功能是用于开发接口

  • 高效且可伸缩这一点可以看出nestjs的各个功能模块之间的架构应该是解耦的而且是易于进行组合的

  • 渐进式可简单可复杂根据大家自己的项目的复杂度。

nestjs特点

除了从上面的定义上我们进行的主观拆解那nestjs还具有哪些特点呢

nestjs框架的特点

  • 完美支持 Typescript

  • 面向 AOP 编程

  • 支持 Typeorm

  • 高并发异步非阻塞 IO

  • Node.js 版的 spring

  • 构建微服务应用

这些全来自于nestjs中文网首页的介绍。

近年发展

近些年来nestjs从2017年创立的发展非常迅猛以下是stars增长趋势

http://img1.sycdn.imooc.com/604f1d190001919a11100689.jpg

目前已经收获了35,152个点赞来源StarTrack

然后再看看npm的趋势与其他的几个库的比较

  • express 2010年1月发布点赞52.2k

  • meteor 2012年发布自成一套下载安装非npm点赞42k

  • koa 2013年11月发布点赞30.8k

  • egg.js 2016年7月发布点赞16.8k

截止北京时间2021年03月08日 21:53:36


nestjs应用场景

这个部分我年过很多人写的内容其实技术上前端人喜欢看新的特点——技术新、更新勤。

追新不能盲目而是要从现实的角度出发解决问题才是最终目的。

基本应用服务端项目开发完成接口功能

服务端扩展安全、鉴权、队列、日志、性能、测试、消息

技术架构微服务、TypeORM+序列化对接多种数据库、多环境配置、AOP编程、MVC基本模型


一些成功的案例

http://img1.sycdn.imooc.com/604f1d4d00011ccb24641102.jpg

官方地址Who is using Nest?

大家可以从其技术特点的角度出发从自己的团队的技术实力与项目的复杂度出发进行综合考虑。

“convention over configuration”——Jeremy Miller

对于nestjs来说大多数前端同学可能不习惯的点

  • MVC分层与模块化思想

  • ts静态类型检查 + 注解 + AOP编程

  • ORM框架的概念的理解与使用

  • 服务端架构 与需要考虑到的安全、日志、性能、监控等

  • 运维相关

nestjs框架关联技术

打开nestjs的官方github仓库可以看到很多官方提供的方案

  • CLI: 官方的CLI工具

  • TypeORM: 对接各式各样的数据库

  • Serverless微服务

  • Swagger用于产生API接口文档

  • Sequelize序列化

  • Mongoose

  • GraphQL

  • Jwt/passport鉴权模块

  • ElasticSearch搜索模块

  • Config配置模块用于多环境配置

  • ….

从官方的仓库的更新的频次可以看到社区的活跃。而且拥有的众多成熟方案 + 丰富的文档让nestjs在国外的发展非常的好。

而且从相关概念上来说对于前端同学走向全栈可以打开关于服务端架构层面的视野。大家可以关注一下如下的这个资源相关资料

这个资源是nestjs中文网整理的包括社区、示例项目、常用库、难点技术集成等比如状态管理、代码风格、邮件、API、错误统一处理、Lint、路由、日志 + 监控、国际化、鉴权等。

nestjs的前景怎么样

我们先看看使用了的同学们大家怎么评价

同学A

我认为框架有两个优点 第一 蹭了一波 typescript 的热度。 第二 它的标准化使的开发的流程非常方便特别是针对流动性比较大的公司来说这是个好事koa 和 express 你非常自由这导致了大家开发的时候有自己的一套开发方式比如不同的分层文件命名项目整体结构如果制定项目的人走了经过几波换人会不会把这个项目改的面目全非

同学B

nestjs在国内的未来不见得会很好因为缺少布道者另一方面是国内有阿里egg.js、midway的竞争。如果从企业级开发的角度来看nest.js的理念比其他node.js web框架都好太多了

同学C

nest.js的更新非常非常的频繁这说明社区活跃度很高。我们团队18年刚开始用的egg.js我为此开发了上层的框架后来发现nest.js早就把这些事情都做好了比如装饰器路由、Exception filters、Pipes、Guards、Interceptors

同学D

挺好的但如果不熟悉 JavaSpring 的话 上手需要一定成本。不过我觉得挺像 Midway.js我 IOC 是看 Midway 的有这一专题的文档你可以找找看。nestjs 的生态是基于 Express Midway 是基于 koa 和阿里的 egg。

….

大家的褒贬不一总结一下。

优点

  • 官方社区活跃

  • 框架架构设计合理对于大型项目非常利于整体的统一

  • 成熟的官方解决方案

  • ts加持

缺点

  • 上手有一定的难度

  • 后期相关的开发人员的缺乏


nestjs学习资源

  • 官方资源

    • 官方网站

    • 官方文档

    • API 参考

    • GitHub Repo

  • 文档

    • 中文文档 推荐

    • 相关资料

  • 社区

    • 中文交流群

    • Gitter

    • Discord

    • Telegram (社区维护)

    • Telegram (俄罗斯社区)

    • Slack (韩语社区)

    • QQ 群 (中文社区)

    • Reddit (社区维护)

下面一篇我们来介绍使用@nestjs/cli上手nestjs开发。


这篇关于nestjs搭建通用业务框架(1):基础介绍的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!