
关于Express的替代方案,在什么地方以及为什么值得放弃Express'a和削减翻译中的小尺寸
快车
Express是一个简单,文档完善,受高度支持且下载最多的Node.js框架。
如果您尝试使用Google搜索如何制作简单的HTTP服务器,那么第一个请求很可能会给您这样的信息:
const server = require('express')({}) server.get('/', (req, res) => { res.send('Hello World!') }); server.listen(3000);
REST API
在公司开发的应用程序体系结构中,REST HTTP和REST服务继续发挥基本作用,因为HTTP仍被用作通信的主要协议。 这意味着要制作新应用程序或微服务的程序员将使用REST API代替例如“事件队列”。
随着使用微服务的流行,REST API致力于尽可能地小并且执行最少的操作。 这就要求开发的API中的端点数量将与微服务的数量成正比增加,并且对于每个简单的操作,都会有自己的端点。 例如,为了更改数据库中的用户数据,将首先调用/ user / search方法以查找所需的用户ID,然后才使用该ID之前返回给我们的参数来调用/ user / update方法。为了执行此操作(请注意)。
是的,REST API必须快速,而且必须快速!
此外,当使用REST API创建高负载的应用程序时,他们越来越多地使用微服务模式。 此类应用程序基于API网关构建。 实际上,Gateway API是用户访问的代理服务器,并且该代理服务器已经访问了负载最少的微服务。 通常,网关API还会解决一些小任务,例如:
- SSL证书处理
- 负载分担
- 授权与认证
- 快取
- 请求内容压缩
- ...
但是,Express太重且太慢。
Express很棒,功能齐全……但是,用于小型目的(例如微服务中的REST API)也很繁琐且缓慢
该库的最新版本(4.16.4)依赖于其中内置的30个模块,并且在开发过程中,向该模块添加了大约20个以上的模块,这最终使该应用程序变得过于沉重,无法用作微服务。

与其他库相比,当您不必执行复杂的查询时,Express太慢而无法用于最小目的。 下图显示了对JSON文档的简单请求执行的比较。


上一张照片中的测量结果并未显示Express总体上较慢,它们表明您需要将处理器的性能提高一倍才能执行简单的操作...因此,使用AWS,Google Cloud,MS的月付款额将会增加Azure或您使用的其他云服务,这将转化为更大且通常不合理的费用。
结论

在Node.js中实现REST API的方法有很多,以下是适合您的任务,具体取决于任务:
- 如果您需要最高的性能,但同时又需要最低的成本,那么Express绝对不是您所需要的。 看一下Fastify 。
- 如果您需要一个带有最少必要功能集的小型图书馆,那么您绝对应该看看restify , koa , polka或restana