共计 3594 个字符,预计需要花费 9 分钟才能阅读完成。
🥳 欢送有趣味的小伙伴,一起做点有意义的事!本文译者:Rick Ma
我发动了一个 周刊翻译打算,仓库地址,拜访地址
当初还很缺气味相投的小伙伴,纯属个人兴趣,当然对于晋升英语和前端技能也会有帮忙,要求:英语不要差的离谱、github 纯熟应用、有恒心、虚心、对本人做的事负责。
想参加的小伙伴,能够 wx 私信,也能够给仓库发 issue 留言,我博客也有具体的集体联系方式:daodaolee.cn
我常常在社交媒体或者评论区看到有人问:”什么是最好的 node.js 框架“,失去的答复往往都十分主观,一些开发者甚至还会为此争论不休。如果你正在为你的我的项目找一个适合的 node.js 框架。那这些答复根本对你没啥帮忙。
大量可供选择的框架,以及这些偏主观的认识,会让你更难抉择。基于这些框架的性能个性列表来进行抉择也会让你很头疼, 而且这些特点也只是框架的一部分形容而已。如果你有一个清晰的清单能够用于评估和抉择 Node.js 框架,那就太棒了。
我无奈为你提供详尽的清单,因为每个我的项目、团队和开发人员都有不同的需要。不过我的确有一些指导方针能够帮忙你思考在抉择 Node.js 框架时什么对你来说很重要。
感激以下几位敌人,他们在 Twitter 分享了他们在抉择 Node.js 框架时所思考的因素:Matt Hinchcliffe、Alex Wilson、Alexey Antipov 和 Anthony Bouch。
你的具体应用状况如何?
所有从理论状况登程。在开始寻找一个框架及其性能之前,请先明确的需要。这将帮忙你确定框架是否旨在反对你预期的性能。要是没有提前明确好的话,你可能会发现自己在构建应用程序时与框架有抵触。
以下是一些你可能须要思考的状况:
- 全栈利用与 API。你的应用程序是提供 HTML 页面还是发送 JSON 响应的 API?如果它是一个 API,它是基于 REST 还是基于 GraphQL?
- 服务端渲染。你打算在你的我的项目里应用 React 或 Vue 组件吗?一些框架提供了帮忙程序来简化在你的我的项目里集成这些框架的过程。
- Serverless。你是否会将你的应用程序部署到 Serverless 平台?对于 AWS Lambda 等 Serverless 平台来说,冷启动工夫真的很重要。如果框架在解决申请之前须要进行大量初始化,则可能会对你的申请响应工夫产生很大影响。
- 即时通讯。如果你想应用 WebSockets,请寻找内置框架反对,或与框架集成的社区保护库。
- Typescript。你想用 TypeScript 开发我的项目吗?有些框架只为 TypeScript 设计,有些框架提供了类型定义,而其余的只提供由社区保护的第三方类型。即便你不打算用 TypeScript 编写代码,你的代码编辑器也可能会依据框架的类型定义为你提供有用的提醒。
框架款式
有些开发者喜爱“开箱即用”的框架,有的人就不喜爱。“开箱即用”指的是 HTTP 申请 / 响应解决和路由之外的性能。这可能包含验证、日志记录、身份验证、数据库形象和依赖注入等性能。此类别中的框架往往对如何构建我的项目做了限度。它们要求你以特定形式进行开发,以便你能够利用它们提供的性能。
而另一个极其是你会发现一些最简略框架。它们偏向于只提供 HTTP 申请 / 响应解决、路由解决,不集成其余性能。他们并不是特地回心转意,并为你提供依据须要自在构建我的项目的权力。因为它们提供的“开箱即用”性能数量无限,因而你须要抉择并集成其余的包以提供其余须要的性能。
有框架就比拟平衡。他们有本人的构思并提供一些除根底性能外附加性能,例如日志记录和验证。你抉择的框架格调能够通过我下面提到的用例来领导。这也可能取决于你的集体爱好(或你团队的爱好)。你可能还没有任何偏好,但如果你留神每个框架的格调,将会有所帮忙。
反对 promises 和 async / await
随着 Node.js 和 ECMAScript 的倒退,围绕回调模式设计的应用程序曾经逐步隐没。相同,咱们当初能够欢快地应用 promise 和 async/await 进行开发。这意味着 Node.js 框架具备 promise 化很重要。它们应该容许你编写 async 路由处理函数,并为你平安地解决未捕捉的 promise rejections。
如果框架不满足这些根本要求,则会减少应用程序中内存透露或解体的危险。我写了一篇深刻的文章,解释了为什么这很重要以及须要留神什么。
文档
首先,你找的框架有文档吗?!如果没有文档,你可能很难应用框架开发我的项目。要防止应用没有文档的框架。
一旦你确定框架是有文档的,请尝试理解文档品质。并非所有文档都是一样的,因而须要思考以下几点:
- 你能够轻松地应用它吗?文档的构造真的很重要。如果有内置搜寻性能,它也会有很大帮忙。
- 这对你有意义吗?可能有很多文档,但如果它写得不好,它不会有太大帮忙。
- 你认为你能够在开发时用上文档吗?浏览和了解如何做某事是一回事,而在构建真正的我的项目时本人利用它则齐全是另一回事。
演示实例
学习应用框架时,浏览简明扼要的文档以可能会让你一时手足无措。如果有可用的理论示例向你展现如何应用它,一旦你对框架的性能有了大抵的理解,那对于你上手框架来说很有帮忙。“hello world”示例可能会向你展现如何应用框架的基础知识,但如果你想做更简单的事件,这通常没有多大帮忙。理论示例将展现你可能须要解决的理论问题的解决方案。现实状况下,他们还将展现应用该特定框架的“最佳实际”。
你可能会在框架文档中或 examples 在我的项目的 GitHub 存储库中的文件夹中找到理论示例。一些框架甚至在 GitHub 上有残缺的演示示例,你能够浏览、运行和筛选它们。
理解创立框架的人如何应用它是学习如何本人应用它的绝佳形式。不仅仅是通过文档磨难你的形式,理论示例将帮忙你应用新框架放慢学习曲线。
社区和生态系统
围绕框架存在的社区的确很重要。当遇到莫名其妙的 bug 时,最重要的是晓得能够去哪里寻求帮忙。看看你正在思考的框架是否有评论区、Slack 或 Discord 服务器。深刻理解并感触社区。那里的人看起来激情和反对吗?他们乐于承受奉献吗?围绕框架的社区在第一天对你来说可能并不重要,但从久远来看,你必定会须要它。
框架风行度并不是所有,但你将围绕它构建整个我的项目。因而看看框架以后其余开发者的应用状况特地重要。如果一个框架被宽泛采纳,会更容易找到一些周边的库(例如中间件或插件)。在你的我的项目中将一个库替换为另一个库可能相当简略,但框架通常不是这种状况。
GitHub 上 star 通常被援用为受欢迎水平的指标,但我认为将它们视为广泛趣味而不是理论应用状况的衡量标准更好。确定框架是否有其余开发者应用的一种简略办法是查看其包下载数。
它们不能用来掂量有多少我的项目在应用一个框架——许多框架与其余库捆绑在一起但没有被应用——但它们能够让你理解一个框架是否被宽泛应用。你能够在包的 npm 页面上查看每周下载量,npm 趋势会显示随时间推移的包下载量。它还容许你比拟包。
零碎健壮性
在抉择用于构建我的项目的框架时,你必定心愿可能保障我的项目能失常运行,并且在可预感的将来将持续失去保护。以下是一些能够用来评估的指标:
- Releases。一些开发人员认为,如果框架曾经“性能残缺”,那它不须要新版本了,但安全更新和谬误修复是必要的。框架(或其依赖项之一)中始终存在重大破绽的可能性。防止任何未保护且不再公布版本的框架是理智的。
- issues 踊跃度。保护人员最近有很多问题没有回复阐明这个我的项目可能没有在保护了。另一方面,如果基本没有人提问题,则可能表明该框架的使用率非常低。
- 拉取申请。一个继续保护的我的项目通常会有一些最近的 pull request。许多旧的或者不沉闷的的忽然凋谢 pull request,可能表明该我的项目不再被保护。
- 贡献者。如果一个框架只有一两个贡献者,则可能表明它四周没有太多社区。如果这些贡献者退出我的项目,它也会对该框架的长期保护产生危险。一个可继续的我的项目将有许多贡献者,增加大大小小的变动。
- 依赖图表。一个框架的依赖越多,危险就越大,而且还会使排查我的项目中的问题变得更加艰难。你不须要找到一个零依赖的框架,但你应该对一个框架的依赖图有肯定的理解。工具 npm graph 能够为你提供杰出的概览。
总结
事实证明,在抉择 Node.js 框架时的确须要思考很多事件。然而,在评估框架时,你可能要问本人最初一件事:你感觉你会喜爱用它开发我的项目吗?就我集体而言,如果我不喜爱应用这个框架,那么每次我须要应用它都会成为一件苦差事。最佳的抉择是一个满足你的要求并且你喜爱应用的框架。
抉择 Node.js 框架可能会很辣手,但心愿我分享的指南将帮忙你欠缺你的框架抉择清单。祝福你能为你的项目选择一个“最佳的”框架!
相干链接
Guidelines for choosing a Node.js framework
翻译打算原文