看了 文章,相信大家動手實踐後都能在瀏覽器中看到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更多幹貨內容。也歡迎分享文章,讓更多的朋友能共同學習提高。