Node.js框架对比:Express/Koa/Hapi

  直至今日,Express.js仍然是最为流行的Node.js Web应用程序框架。它似乎已经逐渐成为大多数Node.js Web应用程序的基础依赖框架,包括很多流行的框架,比如Sail.js就是以Express.js为基础搭建的。然而现在我们有了更多“类sinatra”(注:sinatra是一款Ruby框架,代码非常简洁,号称开发一个博客项目只需要100行代码)似的框架可以选择。也就是接下来我们将分别介绍的Koa和Hapi两个框架。

  本文的目的并不是打算去说服大家去使用其中的任何一款框架,而是希望能够帮助大家去对比分析这三个框架的优劣势。

2、框架背景

  今天我们对比的这三款框架其实都有很多的共通点。比如他们都可以几行代码就能创建一个服务,而且进行REST API的开发也是小菜一碟。下面我们就分别来看这三款框架吧。

2.1、Express

  2009年6月26日,TJ Holowaychuk 第一次提交了Express的代码。在2010年1月2日,Express正式发布了0.0.1版本,截止当时,作者已经提交了超过660次代码。当时Express的两位主要开发维护者分别是TJ 以及 Ciaron Jessup。第一版发布的时候,Express在Github的readme.md介绍文件中式这么描述这块框架的:

一款基于node.js以及Chrome V8引擎,快速、极简的JS服务端开发框架。 

  5年多后今天,Express目前已经发布到4.10.1版本,提交超过4925次代码,目前主要是采用StrongLoop进行开发维护,因为TJ同学已经转入GO语言开发社区了。

2.2、Koa

  Koa是在一年以前也就是在2013年8月17日由TJ同学(是的,还是他...)首次提交的代码。他当时是这么描述Koa的:“更具有表现力,更健壮的Node.js中间件。基于co组件的generators处理异步回调,无论是Web应用还是REST API开发,你的代码都将变得更加优雅”。(注:Koa2发布后,已经放弃了引入co组件,而是开始采用ES7的async/await语法处理异步回调)。轻量化的Koa号称不超过400行代码。(注:SLOC是源代码行数,又分为物理代码行数LOC,以及逻辑代码行数LLOC)。截止目前,Koa已经发布了0.13.0版本,超过585次的代码提交。

2.3、Hapi

  Hapi是由来自于沃尔玛实验室的Eran Hammer同学在2011年8月5日首次提交的。原本他只是Postmile(这是一款在node.js上开发的协作列表工具,服务端由Hapi完成)的一个核心部件,同样也是基于Express开发。后来Hapi才被独立出来作为一款框架进行开发维护,Eran同学在他的博客里这样说道:

  “Hapi的核心思想是配置优于代码,所以业务代码必须从传输层中剥离出来”

  至今为止,Hapi已经提交超过3816次代码,版本是7.2.0,当前仍然是由Eran Hammer进行主要开发维护。

  OK,最后让我们来通过社区的统计数据来看看这三个框架的活跃程度:

  

参考项

 

Express.js

 

Koa.js

 

Hapi.js

 

Github点赞数

 

16158

 

5846

 

3283

 

代码贡献者

 

163

 

49

 

95

 

依赖包数量

 

3828

 

99

 

102

 

StackOverFlow提问数

 

11419

 

72

 

82

 
3、创建服务 

  基本上每个刚开始接触Node.js的开发者第一步操作就是创建一个服务。因为下面我们将依次使用每个框架来分别创建一个服务,来看看他们之间的相似处与不同的地方。

3.1、Express 

var express = require('express'); var app = express(); var server = app.listen(3000, function() { console.log('Express is listening to :3000'); }); 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/555cf68a10a2f0d02545c6f071829610.html