express原始碼剖析2

2022-09-17 20:51:11 字數 2030 閱讀 4144

使用express時,**會這樣寫:

var express = require('express');

建立乙個express的應用,**:

//

express.js/**

* * @return

* @api public */

function

(req, res, next) ;

false

);false

);

return

//}

在express.js中,要區分下面兩個包:

var route = require('./router/route');

var router = require('./router');

//對外都暴露route和router,他們兩者有些不同,

//router是route的超集,兩者的聯絡只在router.route用到。呼叫router.route會得到乙個route,不過給router.stack新增了乙個layer,

//該layer通過router的引數和route.dispatch和使用者的path來定義的。

//route只有三個成員,stack陣列(儲存layer物件),path(路由的路徑)和method物件。

//其中stack陣列與router一樣,同時兩個物件的原型都有methods的和all的方法

exports.route =route;

exports.router = router;

init() ;

this.engines ={};

this.settings ={};

//this

.defaultconfiguration();

};

//

use的使用

var express = require('express');

function

handlerwrap()

路徑/會呼叫hanlerwrap方法

this

.lazyrouter();

lazyrouter() );

為path建立layer,有多少個fn,就建立多少個layer,然後把這個layer壓入router.stack陣列中。初始定義了兩個layer

this._router.use(query(this.get('query parser fn')));

'query parser fn')為乙個函式:

this._router.use(middleware.init(this

)); }

};

if (!fn || !fn.handle || !fn.set) 

fn.mountpath = path; //

如果是express的物件,那麼給express這個物件成員mountpath賦值為path(可能含有正則);

fn.parent = this; //

fn變成子express物件,當前的express為父。

function

這裡看的不太懂。

fn.handle(req, res, function

(err) );

});//

console.log("fn="+json.stringify(fn));

fn.emit('mount', this);

//進入router/index.js中,執行proto.use()方法。

//實際上是給router.stack新增乙個layer成員,

var layer = new

layer(path, , fn);

layer.route = undefined; //

給layer.route賦值undefined

this.stack.push(layer);

express原始碼剖析3

看下這個函式的的核心 就是 get file extension,ext為副檔名 var extension ext 0 ext ext store engine this.engines extension fn use的使用 var express require express functio...

原始碼剖析 Hashtable 原始碼剖析

hashtable同樣是基於雜湊表實現的,同樣每個元素都是key value對,其內部也是通過單鏈表解決衝突問題,容量不足 超過了閾值 時,同樣會自動增長。hashtable也是jdk1.0引入的類,是執行緒安全的,能用於多執行緒環境中。hashtable同樣實現了serializable介面,它支...

express原始碼學習

express.js相當於過程式語言的main函式,是乙個入口,吐出express這個工廠函式。從 組織來看,我們會發現乙個有趣的現象。引入語句總是位於上方,主程式夾在中間,主程式用到的一些輔助函式放在後面。在node.js,我們會頻繁看到es5的一些新方法,這也node.js的特色之一。var c...