express 和 koa 的前世今生

目錄

  • 框架簡(jiǎn)介
  • 相同點(diǎn)
  • 兩者區(qū)別

框架簡(jiǎn)介

Express 框架:

  • Express 框架是由大名鼎鼎的TJ所寫的Web 框架邑狸,它的底層的Node.js http 模塊步氏,Express 框架是http模塊的再次封裝陨簇,提供了豐富的http工具
  • 底層的http模塊封裝Express 的原理如下:
const http = require('http')

// 創(chuàng)建一個(gè)app 實(shí)例
const app = http.createServer((request,response) => {
   response。writeHead(200,{"Content-Type":"text/plain"})
   respnse.end('hello world')
})
  
http.createServer(app).listen(3000)
  • 什么是Express 的中間件:可以處理http請(qǐng)求的函數(shù),它的特點(diǎn)是一個(gè)中間件處理完就會(huì)傳遞給下一個(gè)中間件,上面創(chuàng)建的app實(shí)例在運(yùn)行過(guò)程中會(huì)處理?xiàng)j?duì)中的所有中間件
 // 每一個(gè)中間件從app實(shí)例接受四個(gè)參數(shù)涯肩,分別為request,response.next,error(第四個(gè)參數(shù)為錯(cuò)誤處理函數(shù)的參數(shù)巢钓,不常見(jiàn))病苗,從而對(duì)此進(jìn)行操作
 export const middleWare(request,response,next){
   /**
   * request 請(qǐng)求相關(guān)操作
   * response 響應(yīng)相關(guān)操作
   * next 控制是否傳遞到下一個(gè)中間的方法
   **/
 }
  • use方法:創(chuàng)建的app實(shí)例中注冊(cè)中間件的方法
const express = require('express')
const app = express()  
const middleWare1(request,response,next){
   next()
}

const middleWare2(request,response,next){
   response.set('name','qinglin')
   next()
}

app.listen(3000)

上面代碼中寫了兩個(gè)中間件函數(shù)middleWare1、middleWare2症汹,第一個(gè)中間件執(zhí)行結(jié)束后硫朦,通過(guò)next()方法執(zhí)行第二個(gè)中間件函數(shù)。

Koa框架:

  • 是由 TJ 寫的框架背镇, 封裝請(qǐng)求原理與Express 類似咬展,但是Koa V2的傳遞中間件的方法是通過(guò)async await語(yǔ)法來(lái)實(shí)現(xiàn)的,因此中間件的執(zhí)行模式是洋蔥皮一樣嵌套的泽裳。

相同點(diǎn)——

  • Express和Koa都是再次封裝請(qǐng)求的web 框架,Express 是基于http模塊破婆,而Koa是基于co運(yùn)行的涮总。
  • Koa 的APi 更簡(jiǎn)單,只有application和ctx荠割,ctx.Request妹卿、ctx.Response中的api 與express 中的request、response的APi類似,application 中的api也一樣蔑鹦。
  • Express 能實(shí)現(xiàn)的功能Koa 也能實(shí)現(xiàn)夺克。

兩者區(qū)別

  • Express 的內(nèi)置api 更豐富些比如自帶 Router等,而Koa只有app 和ctx嚎朽,在Koa想要使用其他的中間件工具铺纽,需要自己安裝
  • 兩者依次執(zhí)行中間件函數(shù)的模式不同,Express 是線性模式哟忍,而Koa 是洋蔥模式狡门,傳遞下一個(gè)中間件函數(shù)的方法不同,前者是使用回調(diào)锅很,通過(guò)next()方法執(zhí)行下一個(gè)中間件其馏,而Koa 是使用async await的方法,Express 使用回調(diào)爆安,Koa沒(méi)有回調(diào)
  • Koa 對(duì)于Node.js的版本有要求叛复,7.6.0以上的版本才會(huì)支持async await語(yǔ)法,而Express 對(duì)于Node.js的版本沒(méi)有要求
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扔仓,一起剝皮案震驚了整個(gè)濱河市褐奥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌翘簇,老刑警劉巖撬码,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異版保,居然都是意外死亡呜笑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門彻犁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蹈垢,“玉大人,你說(shuō)我怎么就攤上這事袖裕〔芴В” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)谤民。 經(jīng)常有香客問(wèn)我堰酿,道長(zhǎng),這世上最難降的妖魔是什么张足? 我笑而不...
    開(kāi)封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任触创,我火速辦了婚禮,結(jié)果婚禮上为牍,老公的妹妹穿的比我還像新娘哼绑。我一直安慰自己,他們只是感情好碉咆,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布抖韩。 她就那樣靜靜地躺著,像睡著了一般疫铜。 火紅的嫁衣襯著肌膚如雪茂浮。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天壳咕,我揣著相機(jī)與錄音席揽,去河邊找鬼。 笑死谓厘,一個(gè)胖子當(dāng)著我的面吹牛幌羞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播竟稳,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼属桦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了住练?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤愁拭,失蹤者是張志新(化名)和其女友劉穎讲逛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體岭埠,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盏混,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了惜论。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片许赃。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖馆类,靈堂內(nèi)的尸體忽然破棺而出混聊,到底是詐尸還是另有隱情,我是刑警寧澤乾巧,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布句喜,位于F島的核電站预愤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏咳胃。R本人自食惡果不足惜植康,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望展懈。 院中可真熱鬧销睁,春花似錦、人聲如沸存崖。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)金句。三九已至檩赢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間违寞,已是汗流浹背贞瞒。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留趁曼,地道東北人军浆。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像挡闰,于是被迫代替她去往敵國(guó)和親乒融。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 一摄悯、express 和 koa 的相同點(diǎn):作者赞季、功能…… Express:2010年6月,TJ開(kāi)始編寫Expres...
    代碼流閱讀 414評(píng)論 0 0
  • 前言 Koa 是運(yùn)行在 Node.js 中的 web 服務(wù)框架奢驯,小而美申钩。 Koa2 是 Koa 框架的最新版本,K...
    let_Scott閱讀 5,778評(píng)論 2 28
  • 簡(jiǎn)介 熟悉Spring MVC的朋友應(yīng)該都清楚Spring MVC是基于servlet的代碼框架瘪阁,這是最傳統(tǒng)的we...
    flydean程序那些事閱讀 570評(píng)論 0 1
  • 前言 Node.js 是一個(gè)基于 Chrome V8 引擎的 JavaScript 運(yùn)行環(huán)境撒遣。這也就讓我們可以脫離...
    Perity閱讀 778評(píng)論 0 51
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險(xiǎn)厭惡者,不喜歡去冒險(xiǎn)管跺,但是人生放棄了冒險(xiǎn)义黎,也就放棄了無(wú)數(shù)的可能。 ...
    yichen大刀閱讀 6,057評(píng)論 0 4