Koa と Express のどちらを使用するべきかについて質問する人が多いため、次の記事で、Express と koa の関連情報を比較し、サンプル コードを通じてより適切な選択を行うことができます。とても詳しく書かれていますので、必要な方は参考にしてみてください。
はじめに
Node.js 開発に関して言えば、2 つの人気のあるフレームワーク、express と koa について言及する必要があります。 Express は、使いやすく強力な、シンプルで柔軟な Web 開発フレームワークです。 Koa は、ES6 の新機能に基づいて Express フレームワークのオリジナル チームによって再開発されたアジャイル開発フレームワークであり、現在非常に人気があり、Express に追いつく可能性が非常に高いです。
Express と koa は両方ともサーバーサイド開発フレームワークであり、サーバーサイド開発の焦点は、HTTP リクエストと HTTP レスポンスの 2 つのオブジェクトのカプセル化と処理、アプリケーションのライフサイクルのメンテナンス、およびビューの処理です。
Express は主に Connect ミドルウェア フレームワークをベースにしており、機能が豊富で使いやすいフレームワーク自体に、ルーティング、ビュー処理などの多数の便利な機能がカプセル化されています。 Koa は主に co ミドルウェア フレームワークに基づいており、フレームワーク自体には多くの機能が統合されていませんが、ES6 ジェネレーター機能に基づいたミドルウェア メカニズムにより、長年批判されてきた問題を解決します。 「コールバック地獄」 」や厄介なエラー処理の問題は、開発者の間で非常に人気があります。
実は以前、expressとkoaの比較を書きましたが、後でその中に多くの誤りがあることに気づきました。そこで、特にミドルウェア部分の比較について、以前の間違いを修正することを考えています。よりシンプルな Connect は
connect の実行プロセスを置き換えます。通常、connect のミドルウェア モデルは線形である、つまり、以下に示すように 1 つずつ実行されると言われます。そう言うのは正しいですが、次のコードを実行すると少し混乱するかもしれません:
const connect = require('connect') const app = connect() app.use(function m1 (req, res, next) { console.log('m1') next() console.log('m1 end') }) app.use(function m2 (req, res, next) { console.log('m2') next() console.log('m2 end') }) app.use(function m3 (req, res, next) { console.log('m3') res.end('hello') }) app.listen(8080)
m1 m2 m3 m2 end m1 end
そのような結果上記のモデルとは少し違うように思えますが、これは線形ではないでしょうか? もちろん、これについてはすでに結論付けていますので、詳しく見てください。ここで結果を直接取得します。connect のミドルウェア モデルの疑似コードは次のように表現されます:
http.createServer(function (req, res) { m1 (req, res) { m2 (req, res) { m3 (req, res) {} } } })
http.createServer(function (req, res) { console.log('m1') m1 (req, res) { console.log('m2') m2 (req, res) { m3 (req, res) { console.log('m3') res.end('hello') } } console.log('m2 end') } console.log('m1 end') })
Koa の実行プロセス
同様に、次のようにも述べています。 Koa のソース コード分析で Koa のミドルウェア モデル: オニオン型次のコードを例に挙げます:
const Koa = require('koa') const app = new Koa() app.use(async function m1 (ctx, next) { console.log('m1') await next() console.log('m1 end') }) app.use(async function m2 (ctx, next) { console.log('m2') await next() console.log('m2 end') }) app.use(async function m3 (ctx) { console.log('m3') ctx.body = 'hello' }) app.listen(8080)
サービスにアクセスし、出力:
m1 m2 m3 m2 end m1 end
emm これは connect を読んだのと何ら変わらないようです。私も含めて、koa と Express のミドルウェア モデルに違いがないという結論は、後で説明します。 koa ミドルウェアの簡略化されたモデル:
Promise.resolve(async m1 () { console.log(m1) await Promise.resolve(async m2 () { console.log(m2) await Promise.resolve(async m3 () { console.log(m3) ctx.body = 'xxx' }) console.log(m2 end) }) console.log(m1 end) })
// connect app.use(function (req, res) { getUser(user => res.end(user)) }) // Koa app.use(async (ctx) => { const user = await getUser() ctx.body = user })
console.log(m3 end)
Expressでのbcryptjsパスワード暗号化の使用
以上がExpress と koa の使用の比較 (詳細なチュートリアル)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。