跟其他框架相比,Hapi的路由配置给人的第一印象就是代码清爽,可读性高。甚至连必填的配置参数method,path,hanlder以及reply都非常容易辨别。跟Koa一样,Hapi路由的代码重复性也比较高,所以出错的几率也比较大。之所有这么做,是因为Hapi更希望使用配置来完成路由,这样我们的代码会更清爽,在小组内也会更容易的维护。Hapi同样试图去提高代码错误处理能力,因为有的时候他甚至不需要开发者编写任何代码(注:意思是完全都过配置实现,回调函数也是用默认的。这样出错的 概率就小了很多,也更容易上手)。如果你试图去访问一个没有在REST API中定义的路由,那么Hapi将会返回一个包含状态值与错误信息的JSON对象。
5、优劣势 5.1 Express 5.1.1 优势Express拥有最大社区,比仅仅是跟这三个框架相比,而是对于所有的Nodejs框架来说也是最大的。目前来说,他是最为三者中最为成熟的框架,接近5年的开发投入,同时还采用了StrongLoop(注:StrongLoop是一个进程管理工具,提供CLI与UI界面。)对线上仓库的代码进行管理。他提供了一种简单的方式来创建和运行一个服务,同时路由的内置也使得代码得到了重复使用。
5.1.2 劣势在使用Express过程中,我们往往要处理很多单调乏味的任务。比如他没有内置的错误处理机制,另外对于同样一个问题可以有很多中间件来供选择,这也使得开发者容易迷失在中间件的选择中,总而言之就是,一个问题你会有N多解决方案。Express声称自己是可配置选择的,这其实不没有好或不好,但是对于一个刚刚接触Express的开发者来说,这就是他的劣势了。另外,Express跟其他的框架相比也还有很大的差距。
5.2 Koa 5.2.1 优势Koa的一个小进步就是他的代码比较富有表现力,开发中间件也比其他框架更容易得多。Koa是一个很基础的准系统框架,开发者可以选择(或开发)他们所需要的中间件,而不是去选择Express或Hapi的中间件。他同时也是三者中唯一一个积极拥抱ES6的框架,比如采用了ES6 generators函数。
5.2.2 劣势目前Koa还处于不稳定版本,还处在开发阶段。使用ES6进行开发的确是处于领先水平,比如Koa需要基于Nodejs 0.11.9以上的版本运行,而目前nodejs的文本版本是0.10.33。这是一件可以算作好也可以算作不好的事情,就像Express开发者有很多中间件要选择甚至自己开发中间件一样。比如我们在上面看到的一样,对于路由来说就有很多中间件供我们选择。
5.3 Hapi 5.3.1 优势Hapi一直很自豪的说他们的框架是配置优于代码,当然也有很多开发者可能会质疑把这一点算作是优势。但这一点对于大型项目组来说,的确是可以保持代码的统一性以及代码复用性。另外这款框架是由沃尔玛实验室支持的,也有很多大公司在线上环境使用Hapi,表明他已经通过了严峻的测试,因为这些公司会考虑得更多才会使用Hapi来运行他们的项目。因此所有的这些迹象都表明Hapi正在朝一个伟大的框架发展。
5.3.2 劣势Hapi的定位更倾向于大型或复杂的应用程序。对于一个简单的应用来说,Hapi在代码上反而有些显得冗余了,另外目前Hapi所提供的样例程序也比较少,使用Hapi进行开发的开源应用同样很少。因此,如果选择Hapi的话,你可能要投入更多精力进行开发,而不是简单的调用一个第三方中间件。
6、总结我们已经看了三个框架还算不错具有代表性的一些样例代码。Express仍然是当下最为流行,以及最被人所知晓的框架。当开始一个新的开发项目时,可能大家的第一反应就是用Express来创建一个服务。但是现在更希望大家多考虑考虑使用Koa或者Hapi。Koa积极拥抱ES6的语法,展示了promise的真正魅力。目前整个web开发社区也都意识到ES6的优势,正在逐步往上面迁移。Hapi应该是大型项目组或者大型项目的第一选择。他所倡导的配置优于代码会使得项目组 在代码的重复性上受益不浅,这也正是大多数项目组所追求的目标。现在行动起来,尝试一款新的框架吧,可能你会喜欢他也可能会讨厌他,但如果不去尝试你永远也不会知道结果是什么,最终所有的这些经历都会让你成长为一个更加优秀的开发者。