Node.js主流Web框架对比
创始人
2025-03-17 13:21:46
0次

 Node.js是专注高性能服务器开发的javascript运行环境。我们将在这篇文章向大家介绍几款主流Node.js Web框架的特点及优缺点,希望给大家作为参考。

主要参考的Node.js Web框架包括:express, koa, hapi, restify, fastify, eggjs, thinkjs, Sails, Adonisjs, NestJS。

Benchmarks

  • 测试机器:macos i5 8g
  • 测试工具:wrk -c 100 -t 10 -d 1m http://127.0.0.1:3000
  • Node: v12.4.0

 

Nodejs Web框架压测

其实单单helloworld的压测意义不是很大,但是也可以给我们做个简单的参考。其中express, koa2, hapi, restfiy, fastify属于微框架,eggjs, thinkjs, Sails, Adonisjs, NestJs要稍重一些。其中Sails, NesstJs是基于express,eggjs, thinkjs是基于koa2。我们可以看到Fastify的qps是最高的,Adonisjs垫底。

Github Star

 

Nodejs Web框架Github Star

Github Star量一定程度可以反应出框架的受欢迎程度,我们可以看到,Express 星星最多,毕竟是老牌框架,thinkjs垫底。

NPM 每周下载量

 

Nodejs Web框架每周下载量

npm每周下载量可以真实反应框架目前的受欢迎程度,我们看到Express已经是独领风骚,其实里面还有基于Express做底层的Web框架的量。thinkjs的表现是非常差,只有367的量。

评测

个人观点,仅供参考

  • Express

Node界最老牌的Web框架,最成熟,生态最好。提供了基础的请求上下文封装,路由,中间件,模板引擎接口,静态资源服务。麻雀虽小,五脏俱全。很方便的进行扩展,大量的基于Express的框架。

  • Koa

Express原班人马打造,定义为下一代Web开发框架。仅提供一个请求上下文,中间件机制,没有捆绑任何中间件。通过利用async/await,让你写出更优雅的代码。方便开发者针对自身需求开发自定义框架。

  • Hapi

hapi是由沃尔玛实验室的移动团队创建的,Hapi 是一个用来构建基于 Node.js 的应用和服务的富框架,使得开发者把重点放在便携可重用的应用逻辑而不是构建架构。内建输入验证、缓存、认证和其他 Web 应用开发常用的功能。没有中间件,但提供了强大的插件机制。

  • restify

专注于REST api开发。提供了handle的链式调用及插件机制。

  • Fastify

Fastify号称是最快的Nodejs web框架,在Json输出的场景下,通过Json Schema序列化为Json数据,可以达到原生JSON.stringify 2倍的性能,在极端情况下可达到10倍速。采用对象池,将请求上下文包装对象进行复用。使用trie树存储路由,查找效率更高(在大量有路由的情况下)。Fastify提供了强大的插件机制,通过插件可以分割路由及中间件。

  • egg

eggjs是由阿里推出的一款web企业级框架,提供了完整的Web开发所需的组件,使用koa作为底层。使用了约定大于配置的理念,提供强大的插件机制,方便扩展。

  • thinkjs

thiinkjs是由360推出的,基于koa开发,借鉴了ThinkPHP的一些理念,降低了开发者的使用难度,使用了类是很多php框架的默认路由,使用了继承和钩子方法来重用逻辑。

  • SailsJs

Sailsjs可以算最早开始做集成度很高的框架,底层基于express,Nodejs上的Rails。

  • NestJs

NestJs的主要卖点是TypeScript的完全支持。大量的使用装饰器,代码看起来清爽多了。orm采用TypeORM,使用类型加装饰器,代码比一般的orm整洁得多。

  • AdonisJs

AdonisJs是Nodejs上的Laravel。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...