亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

express的application.js里的路由代碼

2024-04-27 15:09:24
字體:
來源:轉載
供稿:網友

application.js是exPRess框架的核心,也是里面包括了服務端的很多配置和邏輯代碼。這里主要說一下和路由有關的一些代碼。

app.handle = function handle(req, res, callback) { var router = this._router;//這里一開始是空的,只有使用app的http verb方法或者use方法時才會去惰性加載 // final handler var done = callback || finalhandler(req, res, { env: this.get('env'), onerror: logerror.bind(this) }); // no routes if (!router) {//這里一開始是空的,只有使用app的http verb方法或者use方法時才會去惰性加載 debug('no routes defined on app'); done(); return; } router.handle(req, res, done);};app.use = function use(fn) { var offset = 0; var path = '/'; // default path to '/' // disambiguate app.use([fn]) if (typeof fn !== 'function') { var arg = fn; while (Array.isArray(arg) && arg.length !== 0) { arg = arg[0]; } // first arg is the path if (typeof arg !== 'function') { offset = 1; path = fn; } } var fns = flatten(slice.call(arguments, offset)); if (fns.length === 0) { throw new TypeError('app.use() requires middleware functions'); } // setup router this.lazyrouter(); var router = this._router; fns.forEach(function (fn) {//每一個fn對應一個Layer,所以app.use(fn)時,無論是同時傳入多個參數還是多次使用use,每個函數或中間件都對應一個Layer // non-express app if (!fn || !fn.handle || !fn.set) {//fn是函數時 return router.use(path, fn); } //fn是路由對象route時 debug('.use app under %s', path); fn.mountpath = path; fn.parent = this; // restore .app property on req and res router.use(path, function mounted_app(req, res, next) {//app.use('/',router); var orig = req.app; fn.handle(req, res, function (err) { req.__proto__ = orig.request; res.__proto__ = orig.response; next(err); }); }); // mounted an app fn.emit('mount', this); }, this); return this;};app.route = function route(path) { this.lazyrouter(); return this._router.route(path);};app.all = function all(path) { this.lazyrouter(); var route = this._router.route(path); var args = slice.call(arguments, 1); for (var i = 0; i < methods.length; i++) { route[methods[i]].apply(route, args); } return this;};

1.app.handle是服務器的邏輯入口,其實然后直接通過router.handle進入到路由的查找和處理,這個查找和處理過程在上一章里已經分析過,也就是開始對router二維數組進行查找的過程。

2.app.route函數是直接通過app來配置路由的一個快捷方式,他的本質是利用了router.route方法,這個方法會讓路由形成一個二維數組的結構。而不是一維數組。

3.app.use的本質是調用router的方法進行處理,就是把傳入的函數掛載到layer層,然后儲存在router的stack中,其中有一個特殊的情況需要處理,就是如果用戶傳入了一個router類型的路由對象的時候,這時候,如果匹配了對應的路徑時,執行的是該路由對象的handle方法,然后進入該router對象的內部處理邏輯。和下面的all方法是不一樣的。

4.app.all方法本質是利用route對象進行配置路由,邏輯是一個兩層的循環,先是method數組的循環,然后是在route中具體的http方法函數里的循環。 這會在一個route對象的stack數組中存儲大量的layer。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品日韩av| 91亚洲精华国产精华| 中文字幕亚洲国产| 精品日本高清在线播放| 国产精品久久97| 久久在线视频在线| 久久久亚洲国产| 欧美在线激情视频| 欧美限制级电影在线观看| 成人a视频在线观看| 国产精品成人一区二区三区吃奶| 欧美成人精品在线观看| 日韩欧美精品网站| 国产亚洲精品va在线观看| 久久成年人免费电影| 欧美高跟鞋交xxxxxhd| 91亚洲精品久久久久久久久久久久| 日韩精品久久久久久福利| 欧美激情久久久久| 亚洲开心激情网| 午夜精品一区二区三区av| 成人在线视频福利| 日韩一区二区久久久| 国产一区二区三区视频在线观看| 最近2019中文字幕mv免费看| 91丨九色丨国产在线| 亚洲精品色婷婷福利天堂| 成人亚洲欧美一区二区三区| 午夜欧美不卡精品aaaaa| 91精品国产91久久久久久久久| 性欧美在线看片a免费观看| 黑人巨大精品欧美一区二区一视频| 亚洲精品一区久久久久久| 精品日韩美女的视频高清| 91中文精品字幕在线视频| 日韩在线视频免费观看| 久久天堂电影网| 欧美激情按摩在线| 久久久免费观看视频| 国产视频欧美视频| 国产精品手机播放| 亚洲国产成人久久综合一区| 一夜七次郎国产精品亚洲| 亚洲桃花岛网站| 亚洲精品永久免费| 日韩中文字幕免费| 7777kkkk成人观看| 91免费国产视频| 秋霞午夜一区二区| 久久久免费观看| 成人中文字幕在线观看| 国产精品91视频| 国产在线视频2019最新视频| 91免费看片网站| 亚洲男人天堂手机在线| 亚洲成人网在线观看| 热99精品只有里视频精品| 亚洲激情小视频| 日韩精品久久久久久福利| 久久香蕉国产线看观看av| 午夜美女久久久久爽久久| 欧美猛交ⅹxxx乱大交视频| 北条麻妃在线一区二区| 国产一区二区美女视频| 亚洲精品免费网站| 日韩免费电影在线观看| 一本色道久久综合亚洲精品小说| 国产精品视频久久久| 欧美久久精品午夜青青大伊人| 最近中文字幕2019免费| 亚洲第一黄色网| 国产亚洲精品久久久久动| 亚洲精品国产福利| 国产精品成人一区二区| 一区二区三区视频观看| 国产精品久久9| 性欧美长视频免费观看不卡| 91精品国产综合久久男男| 亚洲在线视频观看| 欧美日韩精品在线观看| 欧美视频裸体精品| 国产精品亚发布| 久久久久久久999精品视频| 欧美一区深夜视频| 国产精品免费观看在线| 午夜精品一区二区三区av| 国产日韩欧美中文在线播放| 亚洲精品中文字| 久久久久久久久久久成人| 国产精品日韩欧美| 色午夜这里只有精品| 欧美成人免费一级人片100| 91精品国产91久久久久福利| 欧美wwwxxxx| 亚洲嫩模很污视频| 97香蕉超级碰碰久久免费软件| 亚洲欧美在线一区| 国产精品久久999| 91精品国产色综合久久不卡98| 一区二区欧美亚洲| 久热爱精品视频线路一| 中文字幕久久精品| 久久亚洲精品一区二区| 精品女厕一区二区三区| 久久噜噜噜精品国产亚洲综合| 97香蕉久久超级碰碰高清版| 日韩精品在线观看网站| 国产精品美乳一区二区免费| 亚洲国产精品中文| 亚洲综合在线做性| 欧美日韩成人免费| 91精品国产综合久久男男| 日韩精品视频中文在线观看| 中文字幕亚洲天堂| 国产精品天天狠天天看| 色无极影院亚洲| 国内精品模特av私拍在线观看| 国产91免费看片| 亚洲黄色免费三级| 欧美激情亚洲一区| 欧美午夜无遮挡| 日本精品免费一区二区三区| 日韩在线视频免费观看| 亚洲成人激情图| 亚洲理论片在线观看| 欧美精品情趣视频| 日韩成人在线观看| 色偷偷888欧美精品久久久| 韩国精品美女www爽爽爽视频| 成人精品视频99在线观看免费| 97免费视频在线| 在线观看欧美日韩| 亚洲精品一区久久久久久| 欧美一区三区三区高中清蜜桃| 欧美一区二区三区四区在线| 国产精品爽黄69天堂a| 色老头一区二区三区在线观看| 丝袜亚洲欧美日韩综合| 精品香蕉一区二区三区| 日韩欧美在线视频观看| 欧美xxxx18性欧美| 97激碰免费视频| 亚洲美女视频网站| 国产精品人人做人人爽| 欧美午夜视频一区二区| 国产精品99久久久久久人| 国产日韩欧美影视| 另类色图亚洲色图| 欧美久久久精品| 国产一区二区精品丝袜| 欧美日韩国产精品专区| 国模精品一区二区三区色天香| 日韩欧美高清在线视频| 狠狠色香婷婷久久亚洲精品| 欧美日韩国产在线播放| 亚洲一区美女视频在线观看免费| 在线亚洲欧美视频| 3344国产精品免费看| 国产精品久久99久久| 日韩欧美在线视频观看| 国产亚洲欧美另类中文| 日本人成精品视频在线| 日韩中文在线视频| 欧美激情国内偷拍|