2017-05-16 7 views
0

私はexpress.Router.getの実装を見たかったのです。Expressソースではrouter.get関数が定義されていますか?

プロジェクトのindex.jsから始めて、gitのexpressソースを見ました。

インデックスはmodule.exports = require('./lib/express')です。そのファイルのファイル名はvar Router = require('./router')です。その場所はディレクトリなので、そのディレクトリのindex.jsファイルを確認しました。確かにそれがあります:

var proto = module.exports = function(options) { 
    var opts = options || {}; 

    function router(req, res, next) { 
    router.handle(req, res, next); 
    } 

    // mixin Router class functions 
    setPrototypeOf(router, proto) 

    router.params = {}; 
    router._params = []; 
    router.caseSensitive = opts.caseSensitive; 
    router.mergeParams = opts.mergeParams; 
    router.strict = opts.strict; 
    router.stack = []; 

    return router; 
}; 

これは、ルータの機能を返すコードです。ただし、どこでも定義された.get関数はありません。実際の関数はどこに定義されていますか?

注:getの機能については、 router.get('/', ...)のように指定してください。

答えて

1

閲覧エクスプレスv4.15.2は私が

/** 
* Delegate `.VERB(...)` calls to `router.VERB(...)`. 
*/ 

methods.forEach(function(method){ 
    app[method] = function(path){ 
    if (method === 'get' && arguments.length === 1) { 
     // app.get(setting) 
     return this.set(path); 
    } 

    this.lazyrouter(); 

    var route = this._router.route(path); 
    route[method].apply(route, slice.call(arguments, 1)); 
    return this; 
    }; 
}); 

this._routerが、あなたはどちらか持って探しているものに応じて、よりexpress/lib/router/index.js

から来ている(ライン468)express/lib/application.jsで次のが見つかりました:

  • express/lib/router/layer.js::match (line 110)このルートがpathと一致するかどうかを確認します。その場合は、.params私は十分な評判を持っていないので、私はあなたの答えをupvoteすることはできませんそのルート
+0

req, resを送出し

  • express/lib/router/route.js::dispatch (line 98)が、ありがとう! –

  • +0

    @KingoftheBitあなたのためにupvoted – Vaiden

    関連する問題