再不了解就真的落伍了!下一代web框架你真的知道吗?(2)

<head>/<head><body>

看了 文章,相信大家动手实践后都能在浏览器中看到Hello World了。下面我们进行更深入的学习。不用担心,koa框架优雅而简便,相信你很快就能上手。

0.Context对象

先来看看前面实现的代码:

再不了解就真的落伍了!下一代web框架你真的知道吗?(2)

Koa Hello World

koa框架给我们提供了一个Context对象这个对象封装了用户访问我们helloWordApp后端服务的http请求和http响应。这就意味着,我们可以加工处理这个对象,以此来控制返回给用户的内容(即http响应)。而ctx变量就被默认代表这个Context对象。典型的模式如下(先理解Context的内容,await next会在下一篇文章中详细介绍,也是关于中间件的内容,是Koa的核心!):

再不了解就真的落伍了!下一代web框架你真的知道吗?(2)

Koa await next

1.Context的Request对象

Koa框架的Context对象提供了一个Request对象,Request对象提供了一系列非常有用的方法来处理Http请求。其实进一步了解的话你会发现,Koa框架里的http请求是对node中http模块的IncomingMessage的封装。可以看看下面这个例子,即客户端请求是否支持xml:

再不了解就真的落伍了!下一代web框架你真的知道吗?(2)

Context的Request对象

2.Context的Response对象

Koa框架的Context对象还提供了一个Response对象,同样,这个Response对象提供了一系列有用的方法来加工操作http响应。同样,深入了解的话它是对node中http模块的 ServerResponse 的封装。下面这个例子就是一个利用Response对象给响应中写入一个文件流的示例:

再不了解就真的落伍了!下一代web框架你真的知道吗?(2)

Context的Response对象

3.Contex别名(简写形式)

Context对象也提供了对于这些处理方法的简写形式:

再不了解就真的落伍了!下一代web框架你真的知道吗?(2)

Contex别名演示

那么,可能有人要问了,我怎么知道有哪些简写形式呢?你可以收藏这篇文章,看下图即可。

再不了解就真的落伍了!下一代web框架你真的知道吗?(2)

Contex别名一览

4.深入了解

这里需要深入说一下,Koa对于Node的http请求和响应的封装并不是简单的扩展,而是提供了一套简洁干净的接口,同时减少了不同中间件之间的冲突(中间件下次重点详细讲,是Koa的核心)。同时,Koa对于流的处理也提供了很好的支持。但这并不代表Node中http模块的原生IncomingMessage和ServerResponse不能使用。你可以用Context的req属性来引用IncomingMessage,用Context的res来引用ServerResponse。

5.总结

这次我们主要了解学习了Context对象,学习什么是Context,Context的两个对象及其处理Http请求和响应的方法,以及这些方法的简写形式,最后我们还深入了解了一下Koa。Context是在Koa中间件中进行传递的,对于我们后面理解中间件较重要。欢迎关注本号,学习Koa更多干货内容。也欢迎分享文章,让更多的朋友能共同学习提高。

大神,你都用哪些框架? (多选)
0人
0%
Koa
0人
0%
Express
0人
0%
Sail
0人
0%
Kraken
0人
0%
其他语言
0人
0%
我自己写框架
<button>投票/<button>
/<body>


分享到:


相關文章: