koa2内のノード

koa2プロジェクトの作成

まず、ディレクトリ作成hello-koaVSコードのようにオープンし、プロジェクトディレクトリを。その後、我々は作成しapp.js、次のコードを入力します。

// インポートKOA、KOA 1.xおよびkoa2で異なるが、我々はクラスを導入し、従って大文字興亜に示されている: 
CONST =興亜は、(「koa2」が必要); 

//は、オブジェクトを作成ウェブアプリケーション自体興亜を表します: 
CONSTアプリ= 新しい新しい興亜は(); 

// すべての要求のために、処理要求アプリ非同期関数呼び出し: 
app.use(非同期(CTX、NEXT)=> { 
    待つ次に(); 
    ctx.response.type =「テキスト/ HTML ' ; 
    ctx.response.bodyは ='こんにちは、koa2 <の/ H1> <H1の> '!; 
}); 

// ポートモニタ3000: 
app.listen(3000 ); 
はconsole.log( 'ポートでのAPPを開始3000 ... ' );
 //はhttp://127.0.0.1:3000にアクセスすることができます

HTTPリクエストごとに、KOAは、着信非同期に処理するために私たちの関数を呼び出します:

非同期(CTX、NEXT)=> { 
    ;待つ次に()
    // コンテンツのタイプ応答設定: 
    ctx.response.type = 'テキスト/ HTMLを' ;
     // 設定応答の内容: 
    ctx.response.bodyを=「< >こんにちは、>「のkoa2 </ H1のH1!; 
}

ここで、パラメータがctx渡され、KOAは、我々が要求および応答を介してアクセスすることができ、要求と応答変数をカプセル化し、next次に処理するKOA非同期関数を渡されます。

上記非同期関数は、我々が最初に使用されるawait next();次の処理非同期関数を、次に、応答コンテンツタイプとコンテンツを提供しました。

async関数は非同期関数での非同期マーカ機能と呼ばれている中で、あなたがすることができ、awaitES7に二つのキーワードを紹介します別の非同期関数を呼び出します。

導入プロジェクトで直接使用するために必要で、追加のNPMは、ここでは無視し、インストールすることなく、遼の先生koa2公式サイトでは、このパッケージをインストールする方法探るが、今節でkoa2埋め込まれています。

KOAミドルウェア(KOAコアコードミドルウェア)

のは、KOAの実装ロジックを詳しく見てみましょう。コアコードは次のとおりです。

app.use(非同期(CTX、次回)=> { 
    ;次の()待つ
    ctx.response.type = 'text / htmlの' ; 
    ctx.response.body = '<H1>こんにちは、koa2を</ H1>!' 
});

各々がHTTP要求を受信し、によって呼び出さKOA app.use()渡し、非同期登録機能ctxnextパラメータ。

私たちはできるctx動作し、リターンコンテンツを設定します。しかし、なぜ呼んでawait next()

理由はされて処理チェーンを構成する非同期機能の多くをKOA入れ各非同期関数は、自分の事のいくつかを行うことができその後、await next()次の非同期関数を呼び出します。当社のミドルウェアと呼ばれる各非同期機能、ミドルウェアは、多くの便利な機能を実行するために組み合わせることができます。

例えば、ミドルウェアは、以下の3つの処理チェーン、順次印刷ログ記録処理時、出力HTMLで構成することができます。

app.use(非同期(CTX、NEXT)=> { 
    にconsole.log(ctx.request.method `$ {} {$` ctx.request.url}); // URL印刷 
    ザは、次に()を待つと、// コールミドルウェア
}); 

app.use(非同期(CTX、次) => { 
    CONSTスタート = 新しい新しい日付()getTime();. // 今回 
    ザ(次待つ); // 呼び出しの次のミドルウェア 
    CONST MS = 新しい新しい日付().getTime() -スタート; // 時間を消費する 
    にconsole.logを( `時間:$ {}はMSをms`); // プリント時間がかかる
)}; 

app.use(非同期(CTX、NEXT) => {  
    のawait次の()。
    CTX .response.type= 'text / htmlの' ; 
    ctx.response.body = '!<H1>こんにちは、koa2 </ H1>' ; 
});

ミドルウェアの順番は呼び出しされた、非常に重要であるapp.use()ミドルウェアの順番を決定するシーケンスを。

ミドルウェアは呼び出さない場合はまた、await next()あなたはどのように行うのでしょうか?答えは、ミドルウェアのフォローアップが実行されませんです。この状況は非常に一般的であり、例えば、ユーザー権限のミドルウェアを検出するための要求、または直接リターン403エラーの処理を継続するかどうかを決定することができます。

app.use(非同期(CTX、次)=> {
     場合(待機checkUserPermission(CTX)){ 
        )(次待つ; 
    } そうでなければ{ 
        ctx.response.status = 403 ; 
    } 
})。

ミドルウェアを理解し、我々はすでにKOAを使用しています!

最後に、そのノートctxオブジェクトのような速記方法、多数の有するctx.url等価なctx.request.urlctx.type相当しますctx.response.type

 

おすすめ

転載: www.cnblogs.com/fqh123/p/11032741.html