发布网友 发布时间:2022-04-20 21:30
共2个回答
热心网友 时间:2022-04-20 08:55
koa2完全抛弃了generator和co的做法,而是使用async/await来做异步开发。##不同1.koa和express在表现上的一点不同是采用ctx一个参数来调用中间件,而不是express的req,res。其实在使用上还是个人认为是更方便了的。2.然后是在中间件连接的方式上有所不同。express的设计是串联的,设计思路超级简洁。koa的某一个中间件可以自行选择之后中间件的执行位置的。##举例比如一个服务器处理时间/日志的中间件的开发:express:request进来,记录时间到request._startTime上。绑定一个函数到response的'end','finish'以及response.socket的'error','close'事件上。那个函数会用当前时间和startTime做差,算出运行时间。koa2:```jsconstxTime=async(ctx,next)=>{letstart=newDateawaitnext()ctx.set('X-Response-Time',(newDate)-start)+'ms')}```这是在功能开发上,在错误处理上的友好度就更高了。没有特意抹黑express的中间件开发,那个express版的计时器是express自带的服务器日志中间件morgan的实现。##社区express的社区还是大。koa本来就小,还被从koa1转koa2一折腾,就更小了。而现在koa2还在alpha版,koa及其插件的开发速度比较没有保证。你找到一个中间件,如果是express的,得转过来。如果是koa的,一般也得再转一次。比如我使用的passportjs,github有koa版koa-passport,就分koa1版本和koa2版本的,选择时得注意一下。##个人评价koa2好用,设计上的确有优势。优势不在能实现更强的功能,而是可以更简单地完成功能。koa2社区远不如express,原因之一是~~因为koa2的正式版离发行估计还得3~6个月。~~koa的正式版是koa1。koa1在思想上与koa2是一致的,但是koa2的实现更漂亮。有koa1到koa2的中间件封装函数`koa-convert`。而一般通用的中间件都有koa版,或者能够轻松的转为koa版。个人收集的koa2中间件集合[@wusisu/koa-middlewares](/package/@wusisu/koa-middlewares),在公司项目使用中没啥问题,开发需求暂时都足以实现。有足够折腾能力的team推荐使用koa。-------updated20160708听说koa组表示async被纳入es7准则前,不会发布kao2的正式版。并且,似乎有koa3出现的迹象。只是我不知道该怎么打入他们组织里了解详情。热心网友 时间:2022-04-20 10:13
C#系的在看Wind,挺好的,模仿下比Async/Promise/Step爽多了js的function里面不允许await直接出现functionabc(){awaitxxxAsync();只能写成一个假函数$await()}