Node.js主流Web框架對比

Node.js主流Web框架對比。由於C++所具有的優勢,該項目組的研究人員首先考慮採用C++來編寫程序。但對於硬件資源極其匱乏的單片式系統來說,C++程序過於複雜和龐大。另外由於消費電子產品所採用的嵌入式處理器芯片的種類繁雜,如何讓編寫的程序跨平臺運行也是個難題。

Node.js是專注高性能服務器開發的Javascript運行環境。我們將在這篇文章向大家介紹幾款主流Node.js Web框架的特點及優缺點,希望給大家作為參考。

主要參考的Node.js Web框架包括:express, koa, hapi, restify, fastify, eggjs, thinkjs, Sails, Adonisjs, NestJS。

Benchmarks

  • 測試機器:macos i5 8g
  • 測試工具:wrk -c 100 -t 10 -d 1m http://127.0.0.1:3000
  • Node: v12.4.0
Node.js主流Web框架對比

編程語言有哪些Web框架_編程語言_python_python教程_課課家

Nodejs Web框架壓測

其實單單helloworld的壓測意義不是很大,但是也可以給我們做個簡單的參考。其中express, koa2, hapi, restfiy, fastify屬於微框架,eggjs, thinkjs, Sails, Adonisjs, NestJs要稍重一些。其中Sails, NesstJs是基於express,eggjs, thinkjs是基於koa2。我們可以看到Fastify的qps是最高的,Adonisjs墊底。

Github Star

Node.js主流Web框架對比

Nodejs Web框架Github Star

Github Star量一定程度可以反應出框架的受歡迎程度,我們可以看到,Express 星星最多,畢竟是老牌框架,thinkjs墊底。

NPM 每週下載量

Node.js主流Web框架對比

Nodejs Web框架每週下載量

npm每週下載量可以真實反應框架目前的受歡迎程度,我們看到Express已經是獨領風騷,其實裡面還有基於Express做底層的Web框架的量。thinkjs的表現是非常差,只有367的量。

Node.js主流Web框架對比

評測

  • Express

Node界最老牌的Web框架,最成熟,生態最好。提供了基礎的請求上下文封裝,路由,中間件,模板引擎接口,靜態資源服務。麻雀雖小,五臟俱全。很方便的進行擴展,大量的基於Express的框架。

  • Koa

Express原班人馬打造,定義為下一代Web開發框架。僅提供一個請求上下文,中間件機制,沒有捆綁任何中間件。通過利用async/await,讓你寫出更優雅的代碼。方便開發者針對自身需求開發自定義框架。

  • Hapi

hapi是由沃爾瑪實驗室的移動團隊創建的,Hapi 是一個用來構建基於 Node.js 的應用和服務的富框架,使得開發者把重點放在便攜可重用的應用邏輯而不是構建架構。內建輸入驗證、緩存、認證和其他 Web 應用開發常用的功能。沒有中間件,但提供了強大的插件機制。

  • restify

專注於REST api開發。提供了handle的鏈式調用及插件機制。

  • Fastify

Fastify號稱是最快的Nodejs web框架,在Json輸出的場景下,通過Json Schema序列化為Json數據,可以達到原生JSON.stringify 2倍的性能,在極端情況下可達到10倍速。採用對象池,將請求上下文包裝對象進行復用。使用trie樹存儲路由,查找效率更高(在大量有路由的情況下)。Fastify提供了強大的插件機制,通過插件可以分割路由及中間件。

  • egg

eggjs是由阿里推出的一款web企業級框架,提供了完整的Web開發所需的組件,使用koa作為底層。使用了約定大於配置的理念,提供強大的插件機制,方便擴展。

  • thinkjs

thiinkjs是由360推出的,基於koa開發,借鑑了Thinkphp的一些理念,降低了開發者的使用難度,使用了類是很多php框架的默認路由,使用了繼承和鉤子方法來重用邏輯。

  • SailsJs

Sailsjs可以算最早開始做集成度很高的框架,底層基於express,Nodejs上的Rails。

  • NestJs

NestJs的主要賣點是TypeScript的完全支持。大量的使用裝飾器,代碼看起來清爽多了。orm採用TypeORM,使用類型加裝飾器,代碼比一般的orm整潔得多。

  • AdonisJs

AdonisJs是Nodejs上的Laravel。


經典前端面試題每日更新,歡迎參與討論,地址:https://github.com/daily-interview/fe-interview。


分享到:


相關文章: