node.js - 怎么实现类似express路由中间件的效果?
迷茫
迷茫 2017-04-17 14:50:20
0
1
702

nodejs的事件实现类似:

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

app.post(...)

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

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

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(1)
洪涛

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

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

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

  • 1. 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>メソッドが同じであり、ルートが満たされている場合、 をヒットすると、対応するミドルウェアが呼び出されます。

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

  • 2. トピックの質問

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

    いいねを押す +0
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート