作者:刘子健(繁易)
本次分享来自阿里巴巴前端技术专家刘子健(繁易)在第十六届D2前端技术论坛的分享,为大家带来Node.jsWeb框架的发展历程,分析各类框架的适用场景及利弊。
Web开发一直是Node.js的主流方向,无论新人必学的Express/Koa,或者是社区流行的企业级框架Egg/Nest,各类Web框架层出不穷。本次分享来自阿里巴巴前端技术专家刘子健(繁易)在第十六届D2前端技术论坛的分享,为大家带来Node.jsWeb框架的发展历程,分析各类框架的适用场景及利弊,并基于阿里的Node.js框架Midway,为大家介绍在过去这两年,我们对下一代Node.jsWeb框架的思考、设计、实践,包含如何面向前端做一款前端“爱用”的Node.js框架,如何面向未来标准甚至参与标准来设计Node.jsWeb框架两部分。
Node.jsWeb框架简述
Node.js是基于ChromeV8JavaScript引擎的运行时,一般用于编写CLI、处理数据、编写RestfulAPI、进行页面渲染等等多种作用。之前JavaScript在浏览器端限制比较多,但是自从有了Node.js以后,应用范围得到很大拓展。
Web框架功能
现代的Web开发不管使用什么语言都离不开Web框架。Web框架具有RestfulAPI、数据库CRUD、页面渲染、身份校验等功能,提供了高效开发Web应用的方式,同时Web框架存在适用场景以及规则约束,有源源不断的框架推陈出新。
Node.js框架的发展阶段
Node.js的发展分成三个阶段,分别是起步期、企业架构期、面向前端期。
起步阶段,主打轻量
年Node.js出现,年Express框架出现,年出现Koa框架。当时前端工程师主要是在尝鲜,不敢在业务上做太多的尝试和落地,更多的是验证Node.jsWeb场景可行性。在起步期阶段,框架主打轻量和极简。下面是两个框架的写法示例。
其优点是简单易学,易于集成,Express框架容易集成到Nest和Webpack框架中,Koa.js框架容易集成到Egg和Midway框架中,生态繁荣,久经考验。
其缺陷也是比较明显,表现为缺乏规范和最佳实践、不利于团队协作和大规模开发、Express年久失修。
企业阶段,主打架构
在年到年,Node.js规模化落地,专业的Node.js工程师出现,主打企业级框架和架构以及规模化和团队协作化。
在这一段时间主要出现的框架有nest、Egg、Midway框架,但大多以Express和Koa框架作为基础框架,如下图:
企业级框架优点为大而全,功能完善,规范并且最佳实践明确,易于团队协作,同时社区生态活跃。
缺陷是大而全导致上手成本高;限制多,难扩展。
面向前端
从之后,Node.js发展成熟完善,Node4.0发布,前端工程师人数急速增加,主打面向前端框架的设计,以及简洁和轻量,在这个阶段中主要框架是Next.js以及Nuxt.js框架。
这些框架的优点主要是来自于前端,全栈开发,简单容易学习,支持Serverless部署。
其缺陷是后端功能较弱,自定义扩展困难,强依赖于平台支持。
下面是两个Demo示例:
上面是Next.js,下面是Nuxt.js
在年的时候,一份stateofjs关于Node.jsWeb框架满意度对比的调查报告表明,Next.js成功登顶,并且Express.js框架仍然受到