nodejs的事件实现类似:
app.use(function (req, res, next) {
cosole.log(res)
next()
})
app.post(...)
类似上面,需要实现类似的事件效果:
event.watch('all', cb)
event.watch('[event type]', cb)
就是监控所有事件并作出反馈但不会影响事件的单独执行。这里使用once和emit创建触发事件
PHP中文网2017-04-17 14:52:20
次のコンテンツは主に 2 つの部分に分かれています:
<オル>Express ミドルウェアは大まかに実装されています。
この主題の最後の質問。
まず、Express のルーティング ミドルウェアがどのように実装されているかについて簡単に説明します。 (複雑さを軽減するため、ここではルート分割の実装については触れません)
express
は、ユーザーが app.post(path, fn)
のようなものを呼び出すとき、stack
と呼ばれるデータを内部的に保持します。ルート登録メソッドを使用すると、ルート インスタンスが stack
に追加されます。抽象的には、このルーティング インスタンスは {path: path, handler: fn}
とみなされます。path
はルートに対応するパス、handler code> は対応するミドルウェアです。
より特別なものは app.all(path, fn)
です。実際、内部実装は、大まかに言って、サポートされているすべての htp メソッドを走査すると考えることができます。ノードを呼び出してから、app.get(path, fn)
、app.post(path, fn)
などの Route 登録メソッドを呼び出します (内部実装は詳細です)。これより賢いですが、それほど粗雑ではありません)
ネットワーク リクエストが受信されると、express
は内部でリクエストの http メソッドとパスを検出し、両方が < の場合は stack
配列を走査します。 code>メソッドが同じであり、ルートが満たされている場合、 をヒットすると、対応するミドルウェアが呼び出されます。
同じメソッドとルーティング ヒットを持つ複数のルーティング ルールが存在する可能性があります
。では、複数のミドルウェアの連続呼び出しをどのように実装すればよいでしょうか? 次
です。 (実装は省略)
質問の「イベント効果」に戻ります。上記の手順を参照すると、基本的に実装方法がわかります。