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

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

express框架route.js源碼解析

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

route.js并不是exPRess里真正的路由代碼,他只是其中的一個組成部分,和router(router/index.js)是有區別的。下面先看一下重要的代碼。

function Route(path) { this.path = path; this.stack = []; // route handlers for various http methods this.methods = {};}Route.prototype.dispatch = function dispatch(req, res, done) {//done是router的next函數,執行后會跳到下一個中間件,從而跳過當前route的stack中剩下的函數 var idx = 0; var stack = this.stack; if (stack.length === 0) { return done();//done是開始執行該路由組件時傳進來的回調,執行完路由棧里的函數后執行done } var method = req.method.toLowerCase(); if (method === 'head' && !this.methods['head']) { method = 'get'; } req.route = this; next(); function next(err) { if (err && err === 'route') {//使用next('route')會不執行剩下的函數 return done(); } var layer = stack[idx++]; if (!layer) {//已經遍歷完layer了,跳到下一個router中的layer return done(err); } if (layer.method && layer.method !== method) {//方法不匹配,next return next(err); } if (err) {//通過層層篩選,最后可以執行的路由函數,先判斷有沒有錯誤,再執行相應的函數,每個layer都有對應的回調。 layer.handle_error(err, req, res, next); } else { layer.handle_request(req, res, next); } }};Route.prototype.all = function all() { var handles = flatten(slice.call(arguments)); for (var i = 0; i < handles.length; i++) { var handle = handles[i]; if (typeof handle !== 'function') { var type = toString.call(handle); var msg = 'Route.all() requires callback functions but got a ' + type; throw new TypeError(msg); } var layer = Layer('/', {}, handle); layer.method = undefined; this.methods._all = true; this.stack.push(layer); } return this;};

首先route是作為一個layer對象的一個屬性,掛在在layer中的,route本身的結果類似于router,是一個數組,或者說是一個棧。元素的類型是layer。 1.構造函數比較簡單,主要是存儲路由的路徑和分配一個數組存儲layer數據結構。methods的存在主要是因為前端請求一個路徑,可以對應很多種http方法,比如get,post這種,所以methods變量主要是用在匹配路由時進行篩選時。 2.各種http方法和一個特殊的all方法的邏輯是類似的,主要是根據傳進來的0個或者多個回調函數,創建0個或者多個layer層,并且把他們加到route的數組中。 3.dispatch是最重要的函數,這個函數是在路由查找的過程中,匹配到了當前的路由時執行。核心的邏輯在next函數里,并且這個next函數和router里的next是不一樣的。代碼的第一行先判斷執行next的時候,是否傳入了route,是的話,就忽略當前棧中還沒有執行的函數,跳到下一個路由層。我們可以想象express的整個路由機制有點類似二維數組,比如是5*5的,我們先在一維數組里查找路由(router的邏輯),找到后,假設是第二行,然后我們執行第二行里的所有列對應的函數(route的邏輯)?;氐缴厦妫僭O是在第二列next到第三列時,執行next的時候傳入了route,那么第三列和后面的函數都不會被執行,路由機制會繼續從第三行往后找匹配的路徑。這里是通過執行done達到這個效果。 路由架構圖


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产亚洲7777| 欧美午夜电影在线| 欧美一级黄色网| 国产精品亚洲片夜色在线| 色偷偷噜噜噜亚洲男人的天堂| 自拍偷拍亚洲精品| 亚洲一区亚洲二区亚洲三区| 欧美成人性色生活仑片| 亚洲国产91精品在线观看| 欧美一级bbbbb性bbbb喷潮片| 亚洲电影免费观看高清| 亚洲免费成人av电影| 欧美性理论片在线观看片免费| 97**国产露脸精品国产| 不卡av电影在线观看| 日韩精品在线观看一区| 久久亚洲电影天堂| 日韩欧美成人免费视频| 97久久国产精品| 91亚洲精品久久久| 久久久女人电视剧免费播放下载| 久久精品视频在线观看| 成人亚洲综合色就1024| 91精品一区二区| 91成人在线播放| 日韩麻豆第一页| 日韩精品视频免费专区在线播放| 成人精品在线视频| 少妇激情综合网| 久久免费视频网站| 国产精品视频大全| 亚洲国产美女精品久久久久∴| 亚洲人成电影网站色…| 国产精品第8页| 最新69国产成人精品视频免费| 亚洲色图欧美制服丝袜另类第一页| 一本色道久久综合狠狠躁篇怎么玩| 国产欧美日韩中文字幕| 欧美在线免费看| 欧美日本在线视频中文字字幕| 欧美专区福利在线| 日韩欧美aⅴ综合网站发布| 懂色av一区二区三区| 午夜伦理精品一区| 日韩av网站在线| 国产精品第三页| 亚洲一区美女视频在线观看免费| 久久免费高清视频| 国产亚洲精品成人av久久ww| 日韩成人小视频| 亚洲综合在线播放| 亚洲一区二区三| 亚洲综合日韩中文字幕v在线| 欧美黄色片免费观看| 成人激情视频在线| 社区色欧美激情 | 狠狠躁夜夜躁久久躁别揉| 国产精品久久久久久久久久久久久| 日韩欧美黄色动漫| 欧美国产日产韩国视频| 91亚洲精品久久久久久久久久久久| 91精品久久久久久| 中文日韩电影网站| 日韩av观看网址| 97在线视频免费播放| 国产精品大陆在线观看| 色综合久久悠悠| 色噜噜狠狠狠综合曰曰曰| 国产原创欧美精品| 国产精品中文字幕在线| 亚洲男人天堂2019| 亚州国产精品久久久| 91午夜理伦私人影院| 欧美成aaa人片在线观看蜜臀| 久久久久久国产精品| 久久中文精品视频| 日韩成人黄色av| 亚洲欧美另类自拍| 91精品免费久久久久久久久| 久久视频这里只有精品| 久久免费高清视频| 538国产精品一区二区在线| 欧美视频裸体精品| www.日本久久久久com.| 国产在线精品成人一区二区三区| 日韩有码视频在线| 中文字幕亚洲情99在线| 亚洲人成欧美中文字幕| 91在线观看欧美日韩| 国产精品久久97| 国产精品一二三在线| 国产精品成人观看视频国产奇米| 91精品国产综合久久香蕉922| 成人在线观看视频网站| 国产成人一区二区三区小说| 国内精品400部情侣激情| 久久夜色精品亚洲噜噜国产mv| 国产ts一区二区| 久久99国产精品自在自在app| 日韩在线精品视频| 亚洲精品国精品久久99热一| 国产99久久久欧美黑人| 成人h视频在线| 欧美精品福利在线| 日韩高清欧美高清| 国产97色在线| 国产噜噜噜噜噜久久久久久久久| 青青久久av北条麻妃黑人| 91精品国产免费久久久久久| 国产精品视频免费在线观看| 亚洲欧美日韩视频一区| 久热爱精品视频线路一| 国产精品aaa| 成人a视频在线观看| 精品中文字幕在线2019| 欧美电影免费观看网站| 欧美午夜性色大片在线观看| 91tv亚洲精品香蕉国产一区7ujn| 亚洲国产精品一区二区久| 日韩精品亚洲元码| 5252色成人免费视频| 久久在线免费观看视频| 亚洲精品www久久久| 日韩福利视频在线观看| 日本aⅴ大伊香蕉精品视频| 日本一区二区在线免费播放| 国内成人精品一区| 岛国av午夜精品| 国产精品日韩在线一区| 色爱av美腿丝袜综合粉嫩av| 亚洲自拍偷拍一区| 狠狠操狠狠色综合网| 超碰精品一区二区三区乱码| 久久久久成人网| 亚洲综合最新在线| 国产精品ⅴa在线观看h| 国产精品私拍pans大尺度在线| 国产精品久久久久久久久久99| 国产精品高潮视频| 色一情一乱一区二区| 亚洲高清一区二| 欧美高清在线观看| 国产精品女视频| 亚洲天堂男人天堂女人天堂| 97色在线视频观看| 国产成人精品视频在线| 日韩精品视频中文在线观看| 亚洲色在线视频| 国产在线高清精品| 中文字幕亚洲一区二区三区| 精品国产区一区二区三区在线观看| 91国产精品91| 久久欧美在线电影| 久热国产精品视频| 国产91精品网站| 亚洲性猛交xxxxwww| 大胆欧美人体视频| 国产精品手机播放| 国产精品青青在线观看爽香蕉| 九九热r在线视频精品| 国产精品久久国产精品99gif| 久久这里只有精品视频首页| 精品无人国产偷自产在线| 91av在线视频观看|