网站新闻 城市直达 租车经历 客户留言 网站地图 车辆预订
北京租车热线:010-64005861
 
北京租车
北京租车网 即日起,接送送机有优惠,请来电咨询!
车型介绍
大巴系列
中巴系列
商务系列
轿车系列
企业长租
机场接送
会展用车
 
北京租车北京租车 北京租车北京租车
 主页 > 商务系列 >
为什么Node的web端框架express和Koa的生态环境差距还是巨大201711
北京租车
时间
2019-12-31 06:44:00
点击数
240

 

Koa的下载量和Express的下载量差距很大,并不意味着Koa的生态完善程度和Express也有这么大的差距。其他回答也提到,社区许多前端的server工具通过Express开发,由于依赖Express的第三方模块众多,所以Express的下载量也非常巨大。为什么会这样的原因我猜测主要有两点:先发优势,Express更早出现,而且从可以实现的功能上来说Koa并没有优势。异步编程体验的提升并不能提供足够的动力让社区将老项目迁移到Koa上。Express版本支持的更广泛,Koa1依赖GeneratorFunction,在它刚面世的时候甚至要通过flag开启。可能从Koa开始写的第一天起,TJ包括Koa的维护团队就并没有想过让Koa比Express更热门,Koa和Express基本由同一拨人开发和维护,也基于同样的思想,所以在我看来Koa和Express其实是同一个框架,我们再来理一下Express+Koa的演化过程:Express诞生之初,底层还有一个connect框架实现经典的中间件模型,Express则在它的基础之上完善了路由和一些常用中间件,实现了一个功能相对完整的Web框架。后来Express去除了connect依赖,将中间件模型放到Express中实现,并去除了所有常用中间件(单独模块维护),仅保留了路由功能。由于这些常用中间件均从Express中独立出来,所以有官方钦定了一大堆中间件的感觉。在node0.11引入GeneratorFunction特性之后,TJ实现了co基于generator的控制流工具,可以在AsyncFunction还未落地时即可得到类似的异步编程体验。然而这是一个颠覆式的改变,它完全推翻了node社区自诞生以来的callback编程习惯,很难在Express的新版本上使用,否则对Express的社区也是个很大的震动。因此TJ另起炉灶,重新开发了Koa,没有历史包袱,Koa相比于Express更加精简,仅仅实现了基于co的中间件模型以及对HTTP请求对象的抽象,连路由功能都交由社区实现。当时Koa与co依赖的GeneratorFunction特性还需要通过flag打开,而又恰逢io.js和node之争,node社区的动荡导致GeneratorFunction迟迟难以落地,愿意尝试Koa的人更加稀少,可以说这个阶段的Koa必定是小众产物。随着io.js和node的合并,ES规范推进越来越快,babel也越来越成熟,AsyncFunction的异步编程解决方案也慢慢的被更多开发者知晓,Koa底层的中间件模型经过一次重构,从co迁移到了Promise,给AsyncFunction做准备,发布了Koa2。从此Koa社区处在两个版本长期共存的境况。一方面Koa2支持AsyncFunction,但是node并未支持,需要通过babel转译,而Koa1提供的GeneratorFunction编程体验和AsyncFunction相比并无太大差异,许多开发者并不愿意将服务端代码通过babel转译后运行(收益并不明显)。而两个大版本并存导致社区的中间件维护者也左右为难,很多中间件不得不维护两个版本。在node8发布之后,AsyncFunction终于正式在LTS版本中落地,从此Koa1和co慢慢要退出历史舞台了,egg基于Koa2的版本也开始开发(今天已发布第一个beta版本)。相信统一之后Koa的社区也将会迎来一个快速发展期。了解来Experss和Koa的发展史,其实也不难理解为什么Koa到今天为止和Express相比仍然有相当大的热度差距了。有意思的是,最近hapi.js的作者EranHammer也发布了一篇文章,他在计划基于AsyncFunction开发一个新的框架Kevin。文章中也描述了当时Express和Koa遇到的场景,有兴趣的同学可以看看他的思考。另外,上面打了这么多字,其实我只是想说:如果大家对Koa或者Node.js很感兴趣,不妨来蚂蚁金服-体验技术部,我们一起搞Node.js!简历请邮件busi.hyy@antfin.com!

 上一篇:班车租赁效劳有哪些 班车租赁效劳名目先容 下一篇:为何暴漫中姚明的表情那么火爆
北京租车
网站首页  |    关于我们   |   成功案例   |    租车百科   |    服务范围   |   城市直达   |   顺风车站   |   租车问答  |  车辆预订

电话:010-64005861  备案:京ICP备05045220号  地址:北京市东城区美术馆后街69号楼  
版权所有:Copyright: 2008-2012  
网站地图

北京租车 北京租车网