検索

ホームページ  >  に質問  >  本文

node.js - 怎么实现类似express路由中间件的效果?

nodejs的事件实现类似:

app.use(function (req, res, next) {
    cosole.log(res)
    next()
})

app.post(...)

类似上面,需要实现类似的事件效果:

event.watch('all', cb)
event.watch('[event type]', cb)

就是监控所有事件并作出反馈但不会影响事件的单独执行。这里使用once和emit创建触发事件

迷茫迷茫2780日前676

全員に返信(1)返信します

  • PHP中文网

    PHP中文网2017-04-17 14:52:20

    次のコンテンツは主に 2 つの部分に分かれています:

    <オル>
  • Express ミドルウェアは大まかに実装されています。

  • この主題の最後の質問。

  • 1. Express ミドルウェアの大まかな実装

    まず、Express のルーティング ミドルウェアがどのように実装されているかについて簡単に説明します。 (複雑さを軽減するため、ここではルート分割の実装については触れません)

    ルートを追加

    <オル>
  • express は、ユーザーが app.post(path, fn) のようなものを呼び出すとき、stack と呼ばれるデータを内部的に保持します。ルート登録メソッドを使用すると、ルート インスタンスが stack に追加されます。抽象的には、このルーティング インスタンスは {path: path, handler: fn} とみなされます。path はルートに対応するパス、handler は対応するミドルウェアです。

  • より特別なものは app.all(path, fn) です。実際、内部実装は、大まかに言って、サポートされているすべての htp メソッドを走査すると考えることができます。ノードを呼び出してから、app.get(path, fn)app.post(path, fn) などの Route 登録メソッドを呼び出します (内部実装は詳細です)。これより賢いですが、それほど粗雑ではありません)

  • リクエストの処理

    <オル>
  • ネットワーク リクエストが受信されると、express は内部でリクエストの http メソッドとパスを検出し、両方が < の場合は stack 配列を走査します。 code>メソッドが同じであり、ルートが満たされている場合、 をヒットすると、対応するミドルウェアが呼び出されます。

  • 同じメソッドとルーティング ヒットを持つ複数のルーティング ルールが存在する可能性があります。では、複数のミドルウェアの連続呼び出しをどのように実装すればよいでしょうか? です。 (実装は省略)

  • 2. トピックの質問

    質問の「イベント効果」に戻ります。上記の手順を参照すると、基本的に実装方法がわかります。

    返事
    0
  • キャンセル返事