Node.js主流Web框架對比

2022-02-03 H5前端開發社區

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

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

Benchmarks

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

Github Star

Nodejs Web框架Github Star

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

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


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(一款PHP框架,性能非常強大)。

相關焦點

  • 10個適合web前端開發的node.js框架
    有不少的Node.js 框架,允許你構建實時的端到端網絡應用,而無需任何其他第三方 Web 伺服器、應用伺服器、工具和技術。 杭州達內web培訓專家介紹一些強大的node.js框架,他們可以幫助你建立實時的、各種規模和複雜性的可擴展 Web 應用程式 。 1.
  • 10 個最適合 Web 和 APP 開發的 NodeJS 框架
    然而這些框架不會給開發者太多做錯誤決策的空間。讓我們來看看目前可用的最好、最強大的 NodeJS 框架,並幫助你建立實時的、各種規模和複雜性的可擴展 Web 應用程式1. Node.js Express對於一個已經在使用 node.js 的開發人員來說,Express 或者」node.js express」並不是一個新鮮事。
  • 碼農手記 | node.js後端框架介紹
    Express 是一款基於node.js以及Chrome V8引擎,快速、極簡的JS服務端開發框架>,它提供了用來開發強壯的 web/移動應用,以及 API 的所有功能。Sails 作為一個非常穩固的 nodejs 框架,提供了建立任何規模的 web 應用所需要的所有功能功能。Sails.js 在底層使用了 express 框架來提供對 http 請求的處理,同時使用 Socket.IO 框架來處理WebSocket 請求。
  • 10 個最好用的 NodeJS 框架
    然而這些框架不會給開發者太多做錯誤決策的空間。讓我們來看看目前可用的最好、最強大的 NodeJS 框架,並幫助你建立實時的、各種規模和複雜性的可擴展 Web 應用程式 -對於一個已經在使用 node.js 的開發人員來說,Express 或者"node.js express"並不是一個新鮮事。
  • Node.js Web 模塊
    大多數 web 伺服器都支持服務端的腳本語言(php、python、ruby)等,並通過腳本語言從資料庫獲取數據,將結果返回給客戶端瀏覽器。目前最主流的三個Web伺服器是Apache、Nginx、IIS。Web 應用架構Client - 客戶端,一般指瀏覽器,瀏覽器可以通過 HTTP 協議向伺服器請求數據。
  • PHP VS Node.js 從十個方面對比
    我不希望展開一場PHP、NodeJs兩大陣營之間的戰爭,我將會對比這兩種語言所在領域的發展狀況:Rasmus Lerdorf在1994年創造出了PHP。它是由安裝在web伺服器(Apache、Ngix)上的組件運行的。PHP代碼可以和HTML混合到一塊。 對於初學者就能很快寫出很有價值的代碼,這並不需要太多的練習。
  • 加速Web開發的十種Node.JS框架
    下面讓我們來一起瀏覽一下,目前能夠加速Web開發的十種Node.JS框架。Hapi.js可謂Node.js中強大的框架之一。它的功能不但豐富,而且實用。它可以被用於構建一些應用程式,以實現與API、或其他軟體應用的交互。Hapi.js能夠提供的功能包括:使用JOI(譯者註:是一種工具模塊,可用於JavaScript對象的校驗)的輸入驗證、緩存、日誌記錄、配置管理和錯誤處理等方面。
  • Angular、React、Vue.js 等 6 大主流 Web 框架都有什麼優缺點?
    在這篇文章中,我們將對 6 款主流 Web 框架進行總結,包括我們所認為的強項和弱項。另外,我們為你留下了一些值得思考的問題。我是否需要使用框架?Dojo2 將是未來優秀 web 框架之一,它將繼續努力為構建可擴展性的 web 應用程式提供清晰的模式和指導。隨著新標準的不斷出現,Dojo2 將進一步努力去在框架中實現新的標準方法,繼續嘗試擴大框架的開放性和交互性,創造適合更多人使用的解決方案。
  • 最新Node.js框架:Koa 2 實用入門
    Koa2是目前Node.js世界最火的web框架,無論從性能,還是流程控制上,koa 2和它的後宮(中間件)都是非常好的解決方案。
  • 史上最全的node.js中文學習資料整理!
    node.js優化了特殊用例,還提供替代性強的API。基於此,今天W3Cschool小師妹將為大家帶來史上最全的node.js中文學習資料整理,希望大家喜歡。1.node.js這部分主要包括node.js教程、被誤解的node.js、node.js代碼風格指南、node.js C++addon編寫實戰系列、node.js命令行程序開發教程等。
  • Node.js篇-2. Express框架
    Express框架簡介及初體驗Express框架是什麼Express是一個基於Node平臺的Web應用開發程序,它提供了一系列強大特性,幫助你創建各種web應用我們可以使用 npm install express 命令進行下載Express框架特性中間件什麼是中間件
  • 國內 Node.js 2015 總結
    庫Mabolo: 輕量級的 MongoDB ORM一個自用的極簡 ORM,帶三方緩存支持——ToshihikoA Much Better Pomelo Game Server Framework (網易Pomelo框架深度優化版)Nodejs Web框架Thinkjs第一個全面支持使用 ES6/7 特性開發的 Node.js 框架
  • Node.js 開發框架比較
    後來隨著 Node.js 的出現,npm 包管理帶來的強大生態更是如虎添翼(截止到 2017 年 3 月 npm 共有 43 萬個包)。但是這也造成了 JS 社區變態的快速迭代,大家都直呼趕不上,框架太多,選擇太多,眼花繚亂。下圖是 2016 年 Node.js 開發框架的發展勢頭排名(基於 Github 上 2016 年增加的 star 數)。
  • Farrow 介紹:類型友好的函數式風格 Node.js Web 框架
    一款類型友好的函數式風格 Node.js Web 服務框架。項目動機在當下的 Node.js 開源生態裡,已經有 expressjs, koajs, hapi, restify, fastify,nestjs 等或許數不勝數的 Web 服務框架,我們還需要另一個嗎?
  • 10+ 最佳的 Node.js 教程結合實例
    我們要介紹的指南由Krasimir Tsonev所撰寫,發布在tutsplus.com上面,從node.js的環境搭建,使用Express框架的後端服務,到最後使用Jade模板引擎的前端UI開發,覆蓋了所有前端到後端的方方面面。你可以在後面這個連結中找到這篇指南:  即時通訊(Node.js Tutorial – Real Time Chat) .
  • 10+ 最佳的 Node.js 教程和實例
    Nodeschool.io是另一個比較好的網站,上面有著非常多的資料,可以學習基本的node.js及相關的技術。通過Express框架和Socket.io構建即時通訊APP將一個新技術學到一定高度的最好方式就是通過功能性的應用了。在這個指南中,你將學習使用Express框架和Socket.io構建即時通訊應用,這些技術可以使用基於事件的雙向通信。
  • Node.js 入門指南:Node.js 簡介
    Node.js 是開源的、跨平臺的,自2009推出以來,受到了極大地歡迎,現在在web開發領域發揮著重要的作用。如果以 Github star 作為一個受歡迎程度的指標,那麼擁有59000(當你看到這文章的時候可能已經過60000了)多個star意味著非常受歡迎。
  • javascript開發後端程序的神器nodejs
    隨著ajax的興起和現代web2.0的技術的發展,主流瀏覽器開發商儘可能的提升javascript的執行效率,最後Chrome V8出現了,Chrome V8是 Chromium 項目開源的 JavaScript 引擎,使得javascript的執行效率得到了極大的提升。nodejs借著V8浴火重生了。nodejs從一誕生就獲得了極大的關注。
  • Nodejs 與 Python 的使用對比
    今日文章由 @Keefer 授權分享,文末閱讀原文可跳轉至原文查看寫這篇文章的目的是想記錄下NodeJs(後面簡稱node)與python的使用對比,希望看完之後大家對node跟python有個基本的認識。本文使用的node版本為v12.14.0,python為v3.8.3。
  • 2021 年最值得了解的 Node.js 工具(下)
    核心是內容是如果數據最近被訪問過,那麼將來被訪問的機率也更高,相如果是很久都沒用過的數據會優先對其刪除,常用於優化緩存查詢性能,包括我們使用的框架vue中的keep-alive也是基於該算法開發的lru-cache :最近最少使用的緩存(LRU)實現。ylru :基於hashlru添加過期時間,允許空值。3.2 應用場景2: 基於Node的緩存工具有哪些?no