Express
截止2024年1月10日,star数为62.7k。github.com/expressjs/e…
Express 发布于 2010 年 11 月,是最早诞生的一款nodejs框架,延续至今的更新可以说是功能最全且依然很流行的产品,作者为大神TJ。
其提供了众多web服务器开发需要的路由、模板引擎、MVC、Cookie、Session 等功能,支持通过中间件拓展,上手简单,功能强大。中间件方面express采用的是基于回调函数的中间件机制,中间件的执行是串行的,通过 next 控制流程;在早期版本中对异步处理的支持相对较简单,需要使用回调或者 Promise,不过现在都几乎没什么区别了,同样都支持Generator或Async/Await;
Koa
截止2024年1月10日,star数为34.6k。github.com/koajs/koa
Koa 发布于 2013 年 11 月,可以认为是express的轻量级版本。因ECMA的发展,推出了generator yield语法,js对异步处理迈出了关键性的一步,作为支持,TJ推出了Koa.js,没错koa和express都是TJ团队推出的产品。
Koa为了更灵活和轻量几乎不再内置任何中间件,把复杂度交给了开发者,用户可以根据实际需求选择使用的模块,而不是将所有功能捆绑在一起。Koa使用 Async/Await 处理中间件,中间件的执行是异步的,通过 await next() 控制流程,Koa 的中间件机制更加灵活且易读。
需要注意的是,Koa初衷并不是为了替代Express而出现的,时至今日了,它们的语法用法其实并没有太大的差别,总的来说他们各有所长。比方说如果你开发的不是服务于浏览器的产品,那么可能也就不需要路由、模板等功能,那么没有内置这些东西的更轻量化的koa可能更适合你。如果你需要一个几乎全功能,且社区和开发文档更加丰富全面的框架,那么express仍然是一个最好的选择。
EggJs
截止2024年1月10日,star数为18.7k。github.com/eggjs/egg
EggJs 发布于2016 年 3 月,是一个基于 Koa 的企业级应用框架,Egg.js 的发布旨在解决 Node.js 企业级应用开发中的一些问题,并提供更多的约定和规范,以便开发者更容易构建可维护的大型应用。作者为阿里巴巴团队孵化的开源项目。
EggJs是基于Koa而封装的一款框架,因为koa自身极其简单,开发者所需要的中间件等功能需要自己去社区或者middleware上找,然而十个人可能能找出二十种搭配。为了解决这种问题EggJs整合了可能是当时Koa生态的最佳实践于一身,以降低开发和维护的难度,并做了很多其它方面的优化和规范约定,达到开箱即用的目的。
Nestjs
截止2024年1月10日,star数为62.1k。github.com/nestjs/nest
Nestjs 发布于2017 年 11 月,是一个基于Express和TypeScript的开发框架,它融合了面向对象编程(OOP)、函数式编程(FP)和响应式编程(Reactive Programming)的理念并拥有完善的 TypeScript 支持,用于构建可伸缩且容易维护的服务器端应用。
NestJS 的设计目标是提供一种开箱即用的应用程序架构,允许轻松创建高度可测试、可扩展、松散耦合且易于维护的应用程序,该架构深受 Angular 的启发。同时允许开发者充分利用现有的 Express 生态系统。通过构建在 Express 之上,NestJS 让开发者能够借助 Express 的成熟性和强大性,并在其基础上提供了一些更高级的功能和设计模式。这种设计选择使得那些熟悉 Express 的开发者更容易上手 NestJS,并可以逐步迁移或集成现有的 Express 代码。
NestJS热度一直在爆发式的持续增长,时至发文的今日,已然成为目前最火的nodejs框架。