express原始碼剖析3

2022-09-17 20:48:24 字數 1442 閱讀 4399

看下這個函式的的核心**就是:

//

get file extension,ext為副檔名

var extension = ext[0] !== '.'

? '.' +ext

: ext;

//store engine

this.engines[extension] = fn;

//use的使用

var express = require('express');

function

handlerwrap()

this

.lazyrouter();

lazyrouter() );

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

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);

同理:this._router.use(middleware.init(this))的作用是把該函式,構造成乙個layer成員,然後是給router.stack新增乙個layer成員。

返回的是下列函式:

return

function

expressinit(req, res, next);

express原始碼剖析2

使用express時,會這樣寫 var express require express 建立乙個express的應用,express.js return api public function req,res,next false false return 在express.js中,要區分下面兩個包...

原始碼剖析 Hashtable 原始碼剖析

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

express原始碼學習

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