当前位置: 首页 > 后端技术 > Node.js

如何做好NodeJS框架选型?

时间:2023-04-03 20:08:48 Node.js

作为一名有一定工作经验的工程师,在工作中经常会遇到技术选型的问题。比如我们在工作中需要用到NodeJS时,首先要解决的问题就是如何选择一个合适的框架。不同的框架有不同的特点。如果仅仅从框架提供的能力出发,我们往往会迷失在不同框架能力的比较中。最好有一个清单来检查每个框架并最终选择最符合要求的框架!我们今天试图讨论的是一个清单,我们可以通过它找出最适合我们的框架。我们的使用场景是什么?使用场景是最重要的考虑因素。在选择框架之前,先搞清楚我们的诉求是什么。以下是一些需要考虑的共同点:我们的应用程序是全栈应用程序还是只有API服务?如果只提供API服务,是REST接口还是GraphQL接口?你需要服务器端渲染吗?如果我们使用React或者Vue来开发页面,一些NodeJS框架本身就提供了对这些UI框架的支持。您需要实时响应吗?如果我们需要使用WebSockets,是选择一个支持WebSockets的框架,还是找一个社区维护的第三方库集成到框架中呢?是否支持打字稿?我们要使用TypeScript来开发应用程序吗?有的框架是使用TypeScript开发的,有的框架只提供类型声明,有的框架只有社区第三方维护的类型声明。即使我们不使用TypeScript进行开发,类型声明也可以通过编辑器提示为我们提供很大的帮助。框架风格一些框架除了处理HTTP请求和响应之外,还提供丰富的功能,如验证、日志记录、身份验证、数据库抽象和依赖项注入。这些框架通常对开发者有一些额外的要求,比如以框架要求的形式组织代码,以使用框架的一些能力。有一些框架只提供处理HTTP请求和响应的基本功能。其他能力需要开发者自己实现或者从框架的生态中获取。使用这些框架的开发者具有很高的自由度,可以自由组织代码形式。但是当需要其他一些功能时,开发者需要付出额外的努力来筛选合适的社区实现。也有一些框架采取中间形式,即除了提供HTTP请求和响应的基本能力外,它们还提供了一点功能,例如日志记录和验证。选择哪种风格的框架可以从上面列举的使用场景入手,也可以从个人和团队的风格偏好入手。有据可查的文件是必不可少的。没有人愿意在开发业务的时候通过阅读框架的代码来了解框架的能力。如果一个框架没有文档,我们应该拒绝使用它。对于文档化的框架,我们如何评估文档的质量?可以从以下几点入手:好找吗?例如,文档的结构是否易于理解?有搜索功能吗?文档有意义吗?文档很重要,有用的文档更重要。编写更多无用的文档没有意义。编写代码时文档会派上用场吗?阅读并理解如何做某事是一回事,而亲手去做又是另一回事。当我们写代码的时候,文档能不能直接、清楚地帮助我们?不管你说多少实际例子,还是给我写个sample比较好。阅读文档有时会让我们迷失方向,就像陷入迷雾中一样。如果有一些官方提供的实际例子,对理解框架和解决实际问题会有很大的帮助。官方示例通常是解决特定问题的最佳实践。通常,我们可以在框架源码的examples目录下找到示例,有些框架还有专门的仓库来存放各种示例。框架的社区生态非常重要。选择框架时,观察框架是否有讨论组之类的。参与的人是否友善,乐于助人等等。一个框架的受欢迎程度并不能决定我们是否选择它。但是当我们选择一个框架时,我们需要知道其他开发者是否也在使用它。如果我们选择一个广泛使用的框架,那么我们通常可以找到其他开发人员开发的类库(中间件或插件等)。一个仓库的star数在某种意义上可以代表框架的受欢迎程度。但是,它不能准确表达框架的用法。我们可以先从框架的下载量说起。虽然有些框架是内置的,被其他类库使用,导致下载量很高,但一定程度上可以说明该框架在市场上的使用程度。我们可以在npmtrends上看到框架下载量的变化。项目的健康当我们决定选择一个框架时,我们还需要确保该框架在可预见的未来仍然能够得到有效维护。我们可以从以下几个方面来检查项目的健康状况:发布频率即使一个框架功能齐全,安全更新和错误修复仍然非常重要。因此,在面对暂停维护或长期未发布的项目时,需要慎重考虑。issues中的官方活跃度如果一个项目的issues中官方成员的参与度很低,这可能意味着该项目不再被维护。相反,如果一个项目的问题很少,则可能表明社区对这个框架的使用率很低。拉取请求一个健康的项目通常有一些最近提交的拉取请求。如果一个项目有很多好的pullrequest没有被合并,这可能表明该项目不再被维护。贡献者如果一个框架只有一两个贡献者,说明社区对这个框架的关注度不高。同时,更少的贡献者会给框架的长期维护带来不确定性。一个健康的框架应该有很多贡献者参与。项目依赖一个框架有很多依赖,可能会在很多地方被攻击。同时过多的依赖也可能给开发调试带来很多问题。我们可以使用npmgraph工具来查看项目的依赖关系。以下是一些可用于评估项目健康状况的工具:SynkOpenSourceAdvisor这个工具会从多个来源为一个包收集数据,然后给这个包打分。GitHub存储库的“Insights”选项卡页面GitHub上每个存储库中的此选项卡提供了存储库的最新活动,包括发布、拉取请求、问题和贡献者。Moiva这是一个开源工具,提供与上述两个工具相同的功能。但是这个工具允许我们同时比较多个帧。总结在选择NodeJS框架时,我们需要考虑很多方面。但是最后也是最重要的一点就是我们在使用这个框架的时候是否享受使用这个框架的过程。如果没有,那么即使框架解决了一些问题,我们也会很惨。选择一个可靠的NodeJS框架有时会很棘手,我希望这个清单可以帮助正在做框架选择的人。常见的面试知识点、技术方案、教程,可以扫描二维码关注公众号“何里千寻”获取,也可以来这里https://everfind.github.io。