你的位置:首页 > 软件开发 > Java > [译]Node.js框架对比:Express/Koa/Hapi

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

发布时间:2016-11-07 21:00:28
本文翻译自: https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi 1、介绍  直至今日,Express.js仍然是最为流行的Node.js Web应用程 ...

本文翻译自: 

https://www.airpair.com/node.js/posts/nodejs-framework-comparison-express-koa-hapi

  

1、介绍

  直至今日,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 http://localhost:3000');});

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:[译]Node.js框架对比:Express/Koa/Hapi

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。