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

现在是2021年,是时候抛弃ExpressJS

时间:2023-04-03 16:03:30 Node.js

作者RomainLanz由NewFrontend翻译Express长期以来一直是Node.js生态系统中的事实标准。任何学习Node的教程都会介绍Express。在最近的JS调查中,Express在各个方面都排名第一。即便如此,Express也不是一项伟大的技术,应该在2015年停产。缺少维护Express多年来没有重大更新,其下一个主要版本已经处于alpha状态6年了。人们可能会认为没有大的更新,因为它的API已经稳定,不需要更改。现实是:Express不知道如何处理异步/等待。另一个Nodejs项目建议在Express中间件中使用async/await。我到处都看到内存泄漏。幸运的是,由于@nodejsv15unhandledRejection被破坏了……所以他们至少可以在部署到生产环境之前发现问题。-MatteoCollina如果您在路由处理程序或中间件中使用异步/等待代码,您很容易出现UnhandledPromiseRejectionWarning异常。Express不知道它们,因此它不会为您处理这些异常。Expressrepo里很多人提到他们有这个问题,比如#4360,#4348等。你应该知道,从Node15开始,遇到这个异常时应用程序会崩溃,而在Node15之前它会导致内存泄漏。使用async/await时,您应该始终确保接受AsyncFunction作为回调。[BrokenPromises]是关于这个话题的一个很好的演讲。小型框架“Framework”是一个有歧义的词。拿起你的放大镜,你会发现Express实际上是一个支持中间件的路由库,但它仍然被称为“框架”。游玉玺就如何在框架设计中找到平衡做了很好的演讲,其中提到框架要按范围分类。我们可以将Express划分为一个低范围的框架。在创建应用的时候,除了路由系统,我们还需要更多的功能:访问数据库验证数据,创建身份认证层,创建认证系统等,express没有这些,需要自己粘上.我总是很惊讶地看到人们煞费苦心地将模块粘合在一起来解决问题,而不是选择真正的解决方案来解决问题。停止基于路由系统构建自己的未记录框架,并开始做一些真正重要的事情。-RomainLanz自己粘合这些模块意味着您需要自行承担内存泄漏、安全漏洞、错误等风险。此外,这是浪费时间和金钱,因为你不应该做这件事。有哪些选择?人们应该学习哪些框架?虽然我认为不应该使用窄范围的框架,但仍然有一小部分人喜欢这种风格或出于学习目的需要这样的框架。我会向这些人推荐禁食。该框架得到了很好的维护,并提供了一个官方的Express兼容层,可以轻松迁移您的应用程序。如果你更喜欢一个高范围的全功能框架,让你专注于业务逻辑,你可以使用AdonisJS。没有理由继续使用Express,尽早改变并摆脱它。我讨厌快递吗?郑重声明,我不讨厌Express。这篇文章只是分享我的一些观点,希望能帮助其他人做出明智的决定,而不是随波逐流。Express是Node.js生态系统中排名第一的框架,多年来一直很出色!但现在是时候让它退休了。我希望推动Node.js生态系统向前发展,并帮助新的开发人员学习不会在原地爆炸的技术。注:作者RomainLanz是AdonisJS的开发者之一,本文仅代表作者个人观点。题图ThomHolmes