Express和koa各有啥優缺點

2025-05-30 20:00:09 字數 2245 閱讀 8739

1樓:刻苦且隨和丶彩虹

‍koa 雖然同它哥 express 說的一樣,是 web framework。不過從架構功能設計和架構設計上看,它更像它舅舅(原諒我親戚關係懵了)──connect。更多是一箇中介軟體框架,其提供的是乙個架子,而幾乎所有的功能都需要由第三方中介軟體完成。

express 更為貼近 web framework 這一概念,比如自帶 router、路旦李前由規則等(在沒有剝離bodyparser之前更為貼切);相比之下 koa 則更為寬鬆,光是 router 就有 20+ 個,也對自由選擇的嘛(home · koajs/koa wiki · github),更為靈活。(koa 的 maintainer 之一)也釋出了乙個推薦的常用中介軟體合集包和 koa 最明顯的差別就是 handler 的處理方法,乙個是普通的回擾昌調函式,乙個是利用生成器函式(generator function)來作為響應器。往裡頭兒說就是 express 是在同一執行緒上完成當前程序的所有 http 請求,而 koa 利用 co 作為底層執行框架,利用 generator 的特性,實現「協程響應」(並不能將 generator 等價於協程,在 v8 的郵件列表中對 generator 的定義基本是 `coroutine-like`),然而 co 這個庫對 generator 的使用方法並非當初 generator 的設計初衷。

還是要感謝 tj 創造了 co 這個大殺器吧,讓我們基本完全忘記了什麼是**函式或者 callbacks hell。雖然實現方法略微取巧,但是就大大加速了開發速度這一點而言,已經足以讓我們跪舔了。express:

優點:no callback! no callback!

no callback! 重要的事情說三遍,缺點:connect/express 的中介軟體基本不能模清重用,基本要重寫;依然需要更多人的支援和學習。

2樓:柒74180侖鉀

‍express的優點是線性邏輯:路由和中介軟體完美融合,通過中介軟體形式把業務邏輯細分,簡化,乙個請求進來經過一系列中介軟體處理後再響應給使用者,再複雜的業務也是線性了,清晰明瞭。再說缺點。

express是基於 callback 來組合業褲搏務邏輯。callback有兩大硬傷,一是不可組合,二是異常不可捕獲。express的中介軟體模式雖然在一定程度上解決這兩個問題,但沒法徹底解決。

中介軟體模式就是把巢狀的非同步邏輯拉平了,但它也只能是從較巨集觀的層面解耦順序執行的非同步業務,它無法實現精細的非同步組合控制,比如併發的非同步邏碰宴輯,比如有相對複雜條件控制的非同步邏輯。

胡吵祥‍

3樓:柒63249闌聞

‍首先,藉助 promise 和 generator 的能力,丟掉了 callback,完美解決非同步組合問題和非同步異常捕獲問題。其次,koa 把 express 中內建的 router、view 等功能都移除了,使得框架本身更輕量化。有些人可能會不習慣,行稿絕但我認為這特別好。

首先,把 express 各種中介軟體移植到 koa 是很簡單的一件事;其次檔姿,express 中內敬州置的功能件未必好,比如 view,想新增自己的 view engine 進入得做較深層次的 hack,又比如 router,它的效率不是最好的。koa 沒有內建這些,給了社群很大的自由度都能自由發揮製作出更精細更專業的中介軟體。當然這帶來的另乙個問題便是中介軟體良莠不齊,需要使用者自行甄選。

express和koa的區別

4樓:機器

express和koa從整體上來看,koa是比express更加輕量,他沒有內建的各種中介軟體的支援,更集中於請求處理。當然在express 以後,也移除了一批中介軟體支援,向輕量化進發。這一點上差別其實不是特別大了。

最大的差別是中介軟體和**的處理邏輯。express採用的是callback,koa採用的是async,這樣在執行上鉛者賀express的callback中就天然不支援非同步的處理,在express中處理非同步可能不是你想要的執行順序。在這裡,就有了koa的經典:

洋蔥模型。除此之外,koa在響應上新增了上下文的概念,使用ctx儲存各種響應資訊,避免直接操作能更好的幫助我們在多層級處理中傳遞資訊,例如可以多層級進行組合返回數槐派據。

express 3 ->4 之後,移除了一大批中介軟體,其中和我們關係比較大的是bodyparser、compress、cookiesession、cookieparser、static、directory等。

除此之外,4改變了路由註冊的方式(增量式),嫌談增加了 = 的方式,中介軟體的也支援path的註冊。詳見 moving to express 4 。

傳送門

高鐵和動車有啥區別?它們各有專線嗎?

高鐵的鐵軌是專用的,動車組是在原來的普通鐵軌上的,相同之處就是火車都是和諧號列車。說白了就是,和諧號在專用高鐵車道跑就是高鐵,和諧號在普通鐵軌上跑就是動車。高鐵是時速能達到 km的動車組,普通的動車時速在km左右,普通的動車可以跑普通線路也可以上高鐵專用線路,但是高鐵由於速度過快,且對鐵路要求高,普...

這三套書各有啥特色,這三套書各有啥特色?

我已閱讀,仍然在家中,只是沒有完成。1,是非常昂貴的,研究版本241的話,看完之後,有很多不是一般人可以做的,甚至看完後?能不能夠解決問題,我只是有問題,然後再看看。但是,很多解決不了的問題,找到其他人的,我可以解決,來看看我的成績知道,我的目標是運用所學到的知識。2,很不錯,一些重要的時間段前後看...

ug和proecatia各有哪些優點和缺點

很難從絕對的角度來講那個好的,catia比較適合大型工程,我們公司是搞模具的,用的是ug,感覺ug比catia在模具方面方便,但是很多客戶 汽車公司 傳過來的3d資料都是基於catia的.catia跟ug和proe不是一個級別的,打個比方,catia是美國,ug和proe是歐洲的英法等國。從規模和實...