hello koa!

    继express之后,整出express的这些人推出了koa这个新一代的web服务框架,同时express4.x版本也停止了升级维护。作为一个使用express的开发人员只好跟紧这群大佬的脚步。现在就让我们一起去认识一下我们的新朋友:koa。

    要掌握koa,我们就得理解掌握koa作为web服务框架的几个组成部分:application实例,context上下文,requrest请求,response实例,middleware中间件,cookie,session。

    打开我们用npm下载好的koa包,查看其目录接口:

    大家可以通过Readme.md来学习koa,有兴趣的小伙伴可以通过History.md去了解koa的一些列历史变更。现在我们通过package.json的main字段找到koa的入口文件application.js.

    application.js文件中暴露出来的就是koa的application实例对象。该实例包含了middleware中间件,context上下文对象,request请求,response响应对象。同时application实例继承了emitter对象,我们就可以通过application对象对事件进行监听与发布。

application.js中的核心代码:

一,通过use方法将所有中间件函数存放在数组中

二,在callback方法中通过compose函数将中间件数组中的所有函数串联起来,让其顺序执行。

三,通过node的原生对象创建http服务器,并将callback中串联好的中间件作为回调函数传递给httpserver。

    中间件作为koa整个框架最关键的存在,koa-compose是如何将每个中间件串联起来的呢,我们一起来看看koa-compose的源码。

    当我把koa-compose入口文件index.js中的注释,错误处理这些无关紧要的代码剔除掉后,我们便有了个清晰的了解,compose函数接收 middleware数组,通过递增参数i的方式去遍历调用数组中的每一个中间件,从而实现将数组中的所有中间件像一条链路一样串联起来。

    了解完application实例,middleware中间件,我们在来翻一番context,resquest,response的源码。

    一,request:

    

    二,response

    

    三,context

    

    以上我同样只截取了重要部分代码。request对象为我们提供了获取与设置http请求信息的get&set方法。resposne对象为我们提供了获取与设置http响应信息的get&set方法。context对象整合了request与response,我们可以通过context对象去获取request与response对象并调用其相应的方法。

    至于cookie,session我们同样是通过npm去安装相应的包并作为中间件来使用,所以中间件至关重要,无处不在!

    最后,让我们一起来撸一个hello koa!

猜你喜欢

转载自my.oschina.net/cc4zj/blog/1826069
koa