koa2入門學習

2022-04-19 01:44:47 字數 2326 閱讀 2896

koa模組

koa-route 路由 route.get("路徑",路由函式)

koa-static 靜態資源載入     const serve(路徑)

koa-compose  中介軟體合成模組

koa-body   提取表單post請求鍵值對,處理上傳檔案

上下文context的response和request

ctx.response.body   //返回的主體內容

ctx.response.redirect //重定向

ctx.response.type   //返回的mime型別

ctx.response.path  //獲取使用者請求的路徑

ctx.response.status  //返回的狀態碼

ctx.request.accepts //請求的mime型別

ctx.request.method //請求的方法

ctx.request.url         //請求的url

ctx.request.body //請求的body

中介軟體(middleware)

logger 列印日誌 //不需要引入任何,直接輸入console.log,在命令框就會列印出來

基本上,koa 所有的功能都是通過中介軟體實現的,前面例子裡面的main也是中介軟體。

每個中介軟體預設接受兩個引數,第乙個引數是 context 物件,第二個引數是next函式。

只要呼叫next函式,就可以把執行權轉交給下乙個中介軟體。

中介軟體棧

多個中介軟體會形成乙個棧結構(middle stack),以"先進後出"(first-in-last-out)的順序執行。

最外層的中介軟體首先執行。

呼叫next函式,把執行權交給下乙個中介軟體。

...最內層的中介軟體最後執行。

執行結束後,把執行權交回上一層的中介軟體。

...最外層的中介軟體收回執行權之後,執行next函式後面的**。

例如:有多個中介軟體,每個中介軟體分別寫了next()函式,則每個中介軟體會分別先執行next()函式之前的列印,然後再分別執行next()之後的列印,如果不寫next()函式,那麼執行權就不會傳遞下去,則只列印第乙個中介軟體的內容。

const one = (ctx, next) =>

const two = (ctx, next) =>

const three = (ctx, next) =>

>>one

>>two

>>three

<<<< one

const koa = require('koa');

koa();

const one = (ctx, next) =>

const two = (ctx, next) =>

const three = (ctx, next) =>

>>one

koa();

const one = (ctx, next) =>

const two = (ctx, next) =>

const three = (ctx, next) =>

>>one

>>two

<《比如讀取資料庫等的非同步操作,使用es8 的 async和await

koa-compose模組可以將多個中介軟體合成為乙個

ctx.throw()方法   引數為錯誤的http狀態碼

當直接用ctx.throw()丟擲錯誤之後,則不能在定義返回的頁面顯示內容,所以可以先設定返回的狀態碼為相應的狀態碼,然後定義返回頁面的內容

const main = ctx =>;

使用try..catch捕獲

trycatch

執行過程中一旦出錯,koa 會觸發乙個error事件。監聽這個事件,也可以處理錯誤。

const handler = async (ctx, next) => 

catch

(err)

};const main = ctx =>;

(err) );

ctx.cookies用來讀寫 cookie。

web 應用離不開處理表單。本質上,表單就是 post 方法傳送到伺服器的鍵值對。koa-body模組可以用來從 post 請求的資料體裡面提取鍵值對。

Koa2基礎學習

01 環境準備 安裝搭建專案的開發環境 02 中介軟體用法 講解 koa2 中介軟體的用法及如何開發中介軟體 03 路由koa router 04 post get請求 常見請求方式處理 05 分層 梳理 漸近於 mvc 分層模式 06 檢視nunjucks koa 預設支援的模板引擎 07 處理靜...

Koa2原始碼學習

koa 基於 node.js 平台的下一代 web 開發框架 const koa require koa do some thing 以上 構建了乙個簡單的伺服器,你可以在瀏覽器輸入 localhost 8080 來訪問 下面我們通過建立koa伺服器,且傳送一次http請求來了解原始碼 在koa例項...

Koa2學習(四)POST請求

post請求的資料實體,會根據資料量的大小進行分包傳送。當node.js後台收到post請求時,會以buffer的形式將資料快取起來。koa2中通過ctx.req.addlistener data 這個方法監聽這個buffer。我們簡單的看一下 同樣先簡單起乙個服務 const koa requir...