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

<head>/<head><body>

看了 文章,相信大家動手實踐後都能在瀏覽器中看到Hello World了。下面我們進行更深入的學習。不用擔心,koa框架優雅而簡便,相信你很快就能上手。

0.Context對象

先來看看前面實現的代碼:

Koa Hello World

koa框架給我們提供了一個Context對象這個對象封裝了用戶訪問我們helloWordApp後端服務的http請求和http響應。這就意味著,我們可以加工處理這個對象,以此來控制返回給用戶的內容(即http響應)。而ctx變量就被默認代表這個Context對象。典型的模式如下(先理解Context的內容,await next會在下一篇文章中詳細介紹,也是關於中間件的內容,是Koa的核心!):

Koa await next

1.Context的Request對象

Koa框架的Context對象提供了一個Request對象,Request對象提供了一系列非常有用的方法來處理Http請求。其實進一步瞭解的話你會發現,Koa框架裡的http請求是對node中http模塊的IncomingMessage的封裝。可以看看下面這個例子,即客戶端請求是否支持xml:

Context的Request對象

2.Context的Response對象

Koa框架的Context對象還提供了一個Response對象,同樣,這個Response對象提供了一系列有用的方法來加工操作http響應。同樣,深入瞭解的話它是對node中http模塊的 ServerResponse 的封裝。下面這個例子就是一個利用Response對象給響應中寫入一個文件流的示例:

Context的Response對象

3.Contex別名(簡寫形式)

Context對象也提供了對於這些處理方法的簡寫形式:

Contex別名演示

那麼,可能有人要問了,我怎麼知道有哪些簡寫形式呢?你可以收藏這篇文章,看下圖即可。

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>