Node 三大 web 服务框架实践对比

简述

这里我指的的三大 web 框架,分别为express,koa,egg。这大半年的时间里,陆陆续续的使用这三个框架,分别开发了几个 web server 项目,在这里也是想记录一下,它们的使用心得。在这里我也不会具体评价哪一个框架好与坏,也不具体介绍这些框架的使用方法,只是把自己的使用心得做一次记录。希望能帮助自己,同时也帮助大家,更好的了解 web 框架。

第一个项目(express)

大概在半年前,决定把自己的博客平台,重新做一下。特别感谢社区有 nodejs,所以作为前端也能很容易的写服务端代码,当时就特别想自己是否也能做服务端,那样就能靠自己把整个产品从零到有的全方位实现了。当时就想着自己从头搭建,那第一个念头就想到用 express 框架,因为很早之前就接触过,只是一直没有用。大概查了下 express 官方文档,真的很简单,照样画葫芦,很快就搭好了,主要就看个路由,请求,返回,然后再加几个常用中间件,就基本完事了,然后有什么问题,网上一搜各种博客介绍的相当详细。

就算到现在,我还是认为,如果从来没有接触过服务端语言,想快速上手,那么使用 express 绝对是一个非常好的切入点。

它们说 koa 很好用

作为前端,以前只能写一些偏前的代码,没法接触到数据,一直是个心病。发现自己能写服务端,真的很上瘾,它可以接触到各种新的模块,数据库,部署,可以独立开发产品,这种一切尽在掌握的感觉很好。所以连续设计了几个后台服务,一并开发了,后来和同事合作开发个内部项目,它们说 express 是不是落伍了,现在都用 koa 了。ok,然后我又开始了一轮新的研究。

koa 真的是一种新的模式,它的文档很洁简,就和它的代码一样。如果用过 express ,那也是很容易上手,没用过可能也容易上手的。在我看来,它最大的优势在于它的洋葱模型,写中间件真的很方便,它的上下文(Context)能够方便代码的操作。用完之后我确实,相比 express 就更偏爱 koa 了,一方面代码更洁简了,另一方面可维护性更高。

新的思考 egg

开发了较多的 express 和 koa 项目之后,我一直觉得之前的项目都还可以再优化。有一次和大牛的交流,让我体验一下它开发的框架,以及开发的一些工具类都可以使用一下。我那时候也很烦,不是很想去体验,我问它像 express 和 koa 这框架,好像也不是很好用嘛,总感觉写起来乱糟糟的,还没有前端代码好管理呢。大牛说,以后这些框架都会被干掉的,让我猜会被谁干掉。我没猜出来,大牛说,你之所以觉得这些都不好用,是因为 nodejs 还没有提供一个标准的后台服务框架,以后 nodejs 自己会把 express 或者 koa 这种都干掉,一瞬间我好像明白了很多,大牛就是大牛。

最近,我看着之前用 express 搭的博客,心中就有一个念头,太烂了,我要重构。用 koa 的话我又不甘心,差不了太多呀,也是突然想到有个 egg 企业级的服务端框架。一番研究之后,决定还是用 egg 做重构。

egg 号称是为企业级框架和应用而生。我觉得它最大的优势就在于,框架的约定,定义了不同功能的模块,应该用它特定的名称,以及在框架的特定位置。虽然同样一个简单功能,在 egg 中可能要在不同的地方多写几遍定义,但是针对那些复杂的功能,这些定义就能让整个项目结构更加清晰。当我最后用 egg 重构完项目后,我能清晰的感觉到,整个项目比原来的结构清晰许多,也更有逻辑性。

egg 我还是非常推荐可以应用一下的。使用 koa 的时候,所有的事情都需要自己捣鼓配置,egg 就像一个相对集成的框架,基本不需要额外配置就已经可以正常开发了。不过使用 egg 前,还是先使用 koa 会更好一点。

最后

三大 web 框架都有各自的优势,在不同的阶段可以使用不同的框架。从零开始的朋友,我建议先使用expresskoa,有基础的可以使用egg,有追求的可以深入了解三大框架的产生背景,以及其内部的基础架构。

文章作者: 方长_beezen
文章链接: https://dongbizhen.com/posts/18050/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 BEEZEN