乐趣区

关于node.js:如何做好-NodeJS-框架选型

作为一个有肯定工作教训的工程师,工作中常常会遇到技术选型的问题。比方当咱们在工作中须要应用到 NodeJS 时,第一个要解决的问题就是如何抉择一个适合的框架。

不同的框架有不同的特点,如果咱们仅仅从框架提供的能力登程,往往会迷失在对不同框架能力的比照中。如果能有一个清单,照着这个清单来考查每个框架,最终选出最符合要求的框架,那就真是太棒了!

咱们明天就试图来探讨出一个查看清单,通过这个清单,咱们能够找出最适宜咱们的框架。

咱们的应用场景是什么?

应用场景是最重要的思考因素。在抉择框架之前,先搞清楚咱们的诉求是什么。

上面是一些常见的须要思考的点:

  • 咱们的利用是全栈利用还是只提供 API 服务? 如果只提供 API 服务的话,是 REST 接口还是 GraphQL 接口?
  • 是否须要服务端渲染? 如果咱们应用 React 或者 Vue 来开发页面的话,一些 NodeJS 框架自身提供了对这些 UI 框架的反对。
  • 是否须要实时响应? 如果咱们须要应用到 WebSockets,是抉择一个反对 WebSockets 的框架,还是找一个社区保护的第三方库来集成到框架中?
  • 是否反对 TypeScript? 咱们是否要用 TypeScript 来开发利用?有些框架是应用 TypeScript 开发的,有些框架只提供了类型申明,而有些框架只有社区第三方保护的类型申明。即便咱们不应用 TypeScript 开发,类型申明也能够通过编辑器提醒给咱们带来微小的帮忙。

框架的格调

有些框架除了解决 HTTP 申请和响应以外,还提供了相似于校验、日志、认证、数据库形象以及依赖注入等其余丰盛的性能。这些框架通常对开发者有一些额定的要求,比方要依照框架要求的模式来组织代码能力应用框架的一些能力。

有一些框架只提供解决 HTTP 申请和响应的根本能力。其余能力须要开发者自行实现或者从框架的生态中自行获取。应用这些框架的开发者自由度很高,能够自在组织代码模式。然而当须要一些其余性能时,开发者须要额定付出精力来筛选适合的社区实现。

还有一些框架采取了中庸的模式,即除了提供 HTTP 申请和响应的根本能力以外,还提供了稍许性能,比方日志和校验等。

抉择哪种格调的框架,能够从下面列出的应用场景登程,也能够从集体和团队的格调偏好登程。

文档

丰盛的文档至关重要。没有人会想一边开发业务,一边通过浏览框架的代码来理解框架的能力。如果一个框架没有文档,咱们应该回绝应用。对于有文档的框架,咱们如何评估文档的品质呢?

能够从上面几点登程:

  • 是否能够不便的查找? 比方文档的构造是否容易了解?是否提供搜寻性能?
  • 文档是否有意义? 文档很重要,有用的文档更重要。没有用的文档写的再多也没有意义。
  • 当写代码的时候,这些文档是否能派上用场? 浏览和了解如果做一件事是一回事,动手做一件事是另一回事。在咱们写代码的时候,文档是否能够间接明确的帮忙咱们?

实用的样例

说的再多不如写一个样例给我。浏览文档有时候会让咱们迷失方向,如同坠入一团雾中。如果有一些官网提供的实用样例的话,对了解框架以及解决理论问题的帮忙就很大。官网提供的样例通常也会是解决某一个具体问题的最佳实际。

通常,咱们能够在框架源代码的 examples 目录中找到样例,有些框架还会有一个专门的仓库来寄存各种各样的样例。

社区生态

一个框架的社区生态十分重要。在抉择框架的时候,察看下框架是否有讨论组之类的货色。参加其中的人是否敌对、是否乐于帮忙别人等。

框架是否风行不能决定咱们是否抉择这个框架。然而咱们在抉择框架的时候,要理解是否有其余开发者也在应用。如果咱们抉择了一个被宽泛应用的框架,那么咱们通常能够找到其余开发者开发的类库(中间件或者插件等)。

一个仓库的 star 数量某种意义上可能代表框架的受欢迎水平。然而却不能精确的表白框架的应用状况,咱们能够从框架的下载量着手。尽管有一些框架被其余类库内置应用,导致下载量很高,然而肯定水平上能够阐明框架在市面上的应用水平。咱们能够在 npm trends 上看到框架的下载量变动。

我的项目的衰弱水平

当咱们决定抉择一个框架的时候,咱们还须要确保这个框架在可见的将来工夫内仍然可能失去无效的保护。

咱们能够从上面几个方面来考查我的项目的衰弱水平:

  • 版本公布频率 即便一个框架的性能曾经十分欠缺了,安全更新和问题修复仍然非常重要。因而在面对曾经暂停保护或者很长时间没有发版的我的项目的时候,须要慎重考虑。
  • 官网在 issue 的沉闷水平 如果一个我的项目的 issue 里官网成员的参加水平很低,可能在暗示这个我的项目曾经不再保护了。相同,如果一个我的项目的 issue 很少,有可能阐明社区对这个框架的应用水平很低。
  • Pull request 一个衰弱的我的项目,通常都会有一些近期刚提交的 pull request。如果一个我的项目有很多很好的 pull request 没有合并,可能阐明这个我的项目曾经不再保护了。
  • 贡献者 如果一个框架的贡献者只有一两个人,阐明社区对这个框架的关注度不高。同时较少的贡献者,会给框架的长期保护带来不确定性。一个衰弱的框架,应该有很多贡献者参加进来。
  • 我的项目依赖 一个有着很多依赖的框架,可能受攻打的中央也很多。同时,太多的依赖也可能给开发调试带来很多问题。咱们能够通过 npmgraph 这个工具才查看一个我的项目的依赖状况。

这里有一些评估一个我的项目衰弱度的工具能够应用:

  • Synk Open Source Advisor 这个工具会从多方收集一个包的数据,而后给出这个包的打分。
  • GitHub 仓库的 “Insights” Tab 页 GitHub 上每个仓库中的这个 Tab 提供了这个仓库近期的流动状况,包含发版、pull request、issue 和贡献者等。
  • Moiva 这是一个开源工具,与下面两个工具提供的能力雷同。然而这个工具容许咱们同时对比多个框架。

总结

在抉择一个 NodeJS 框架的时候,咱们有很多方面须要思考。然而最初也是最重要的一点是,咱们在应用这个框架的时候,是否享受应用它的过程。如果不是,那么即便框架解决了一些问题,咱们也会十分好受。

抉择一个靠谱的 NodeJS 框架有时候十分辣手,心愿这个查看列表能给正在做框架选型的人一些帮忙。

常见面试知识点、技术解决方案、教程,都能够扫码关注公众号“众里千寻”获取,或者来这里 https://everfind.github.io。

退出移动版