首頁>技術>

曾幾何時,在Nodejs 8以前的年代,我們被JS的回撥機制虐得死去活來,想說愛並沒有那麼容易。而Koa的出現,尤其是co模組,讓我們趨之若鶩。精簡的程式碼風格,高效的效能,以及可以使用JS的新語法。都是廣大JSer的嚮往。正如Koa介紹的那樣【Expressive middleware for node.js using ES2017 async functions】

隨著Nodejs 10的到來,我們再也不需要使用【--harmony】,而Koa的一大優勢也就不再是優勢了。

效能?

在V8 6.0+版本的加持下,Express的效能也開始和Koa拉齊。下面是測試程式碼:

// version 2.11.0const Koa = require('koa');const app = new Koa();app.use(ctx => { ctx.body = 'Hello Koa';});app.listen(3000);
// version 4.17.1const express = require('express');const app = express();app.use((req, res) => { res.end('hello express');})app.listen(3000);

參看下面資料(MacOS10.12.6,Nodejs v10.17.0):

由於我的電腦比較垃圾,最多隻支援200併發症,如果多了ab就卡死了。以上資料是經過多次使用ab壓縮取得的平均資料。

 ab -n 5000 -c 200 http://localhost:3000/

而Koa在面向未來的語法相容上,由於Nodejs的發展,已經和其他框架沒有任何區別。

曾經我們為了追求那一點點極致效能而選擇Koa,尤其是高併發下,如果是1000w的併發,一個請求快那麼十幾毫秒,那麼久可以節約出幾萬秒的總處理時間,可以多處理幾十萬的請求,但是,現在已經大可不必了。

JS語言新特性?

曾經我們可以為了體驗更新的JS語法挑戰Koa,為了解決回撥地獄挑戰Koa,被Koa缺乏官方支援的中介軟體的生態下磨礪前行。也為大家增添了不少樂趣。痛苦並快樂著。但是現在Nodejs本身已經支援超過99%的新語法。

極簡框架?

這是一個偽命題,曾經在IBM期間,我與Nodejs核心團隊成員(TSC)共事,有幸和他討論過koa和express的問題,他問我:”你用Nodejs寫Web服務會不需要Router嗎?會不需要BodyParse嗎?會不需要Cookie解析嗎?不,不會。那你用一個極簡的框架,然後還要把他們安裝回來弄得和express一樣。那他極簡解決了什麼問題?“,而企業級應用一般是不在乎那十幾毫秒的效能的。

以後

Koa是否還是我們的第一選擇呢?在我這裡,他一直都不是最優選擇。我是Express的忠實使用者,其實也主要得益於早年接觸Express就是先從接觸它的維護團隊開始的。而且我的業務場景大多都是企業級應用為主,穩定性,成熟是第一要素。

但是Koa帶給我很多快樂是express給不了的。新的視野和樂趣。因為Koa缺乏很多中介軟體的支援,因此大部分中介軟體都要自己去寫。這期間個人得到了非常大的成長。但是並不是所有團隊都能Hold的住。我是親眼目睹一些團隊被Koa拖慢了腳步,甚至最後還有翻船的。而Egg在這方面確實解決了很多技術實力比較薄弱,又想嘗試Nodejs技術棧的技術團隊的大問題。

我自己是一名從事了多年的前端老程式設計師,小編為大家準備了新出的前端程式設計學習資料,免費分享給大家!

如果你也想學習前端,那麼幫忙轉發一下然後再關注小編後私信【1】可以得到我整理的這些前端資料了(私信方法:點選我頭像進我主頁有個上面有個私信按鈕)

最新評論
  • 1 #

    還是直接上nest吧 一步到位

  • 2 #

    而企業級應用一般是不在乎那十幾毫秒的效能的 哈哈哈

  • 3 #

    如果願意看原始碼的話,看下koa2的核心模組吧,寫的很精彩,很小

  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 5.Python入門系列之——第一個網站