闲谈Node.js 的Koa框架和Express框架

Koa 是一个基于 Node.js 平台的下一代 web 开发框架。网上对 koa 框架的学习教程并不多,因此我整理了一些关于 koa 框架的学习教程,方便大家学习!

更多精彩内容请看 web前端中文站
www.lisa33xiaoq.net 可按Ctrl + D 进行收藏

koa简介

koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。

闲谈Node.js 的Koa框架和Express框架

koa2 完全抛弃了generator和co的做法,而是使用async/await来做异步开发。

koa和express的不同点

  • koa和express在表现上的一点不同是采用ctx一个参数来调用中间件,而不是express的req, res。
  • 然后是在中间件连接的方式上有所不同。express的设计是串联的,设计思路超级简洁。koa的某一个中间件可以自行选择之后中间件的执行位置的。

实例比较

比如一个服务器处理时间/日志的中间件的开发:

express的做法

request进来,记录时间到request._startTime上。绑定一个函数到response的’end’,’finish’以及response.socket的’error’,’close’事件上。那个函数会用当前时间和startTime做差,算出运行时间。

koa2的实现代码

 const xTime = async (ctx,next)=>{    
 let start = new Date    
 await next()    
 ctx.set('X-Response-Time', (new Date) - start) + 'ms') }

这是在功能开发上,在错误处理上的友好度就更高了。
没有特意抹黑express的中间件开发,那个express版的计时器是express自带的服务器日志中间件morgan的实现。

社区方面

express的社区还是大。koa本来就小,还被从koa1转koa2一折腾,就更小了。而现在koa2还在alpha版,koa及其插件的开发速度比较没有保证。你找到一个中间件,如果是express的,得转过来。如果是koa的,一般也得再转一次。比如我使用的passportjs,github有koa版koa-passport,就分koa1版本和koa2版本的,选择时得注意一下。

闲谈Node.js 的Koa框架和Express框架

koa2好用,设计上的确有优势。优势不在能实现更强的功能,而是可以更简单地完成功能。koa2社区远不如express,原因之一是~~因为koa2的正式版离发行估计还得3~6个月。~~koa的正式版是koa1。koa1在思想上与koa2是一致的,但是koa2的实现更漂亮。有koa1到koa2的中间件封装函数`koa-convert`。而一般通用的中间件都有koa版,或者能够轻松的转为koa版。

Express 和 Koa 最明显的差别就是 Handler 的处理方法,一个是普通的回调函数,一个是利用生成器函数(Generator Function)来作为响应器。往里头儿说就是 Express 是在同一线程上完成当前进程的所有 HTTP 请求,而 Koa 利用 co 作为底层运行框架,利用 Generator 的特性,实现“协程响应”(并不能将 Generator 等价于协程,在 V8 的邮件列表中对 Generator 的定义基本是 `coroutine-like`),然而 co 这个库对 Generator 的使用方法并非当初 Generator 的设计初衷。

express 适合入门选手,koa高不成低不就,学习一下其mw的设计即可。

有关node.js下Koa的学习有一个系列的学习教程,大家可以参考着以下资料,循序渐进地掌握Koa框架知识。

1.NODE.JS KOA 框架 的基本用法

2.NODE.JS KOA 框架 的路由用法

3.NODE.JS KOA 框架 的中间件用法

4.NODE.JS KOA 框架 的COOKIES、表单、文件上传功能详解

5.NODE.JS KOA 框架 的错误处理

6.闲谈NODE.JS 的KOA框架和EXPRESS框架

7.NODE.JS对接HYBRID框架VASSONIC教程

参考资料

  • https://github.com/koajs/koa/wiki
  • https://www.npmjs.com/package/koa-middlewares

【注:本文源自网络文章资源,由站长整理发布】

0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到