盤點Github九大流行Node.js框架
這篇文章的重點是Node.js框架,探討各類Node框架的優劣,并提供每個Node框架的描述,包括在Github上的受歡迎程度以及各自支持者或社區的貢獻。
Node.js 是由Ryan Dahl于2009年創建的。它是一個開源的跨平臺運行時環境,用于開發服務器端和網絡應用程序,它是基于Google Chrome V8 JavaScript引擎構建的。Node.js使用事件驅動,非阻塞I/O模型而得以輕量和高效,非常適合在分布式設備上運行數據密集型的實時應用。你 可以通過在Node.js中運行JavaScript,使用Ruby或者PHP語言做想做的任何事情。
由于其具有可以方便地搭建響應速度快、易于擴展的網絡應用等特性,Node.js受到了Netflix,Groupon,PayPal,LinkedIn,Uber,eBay等公司的信任,這進一步促進了Node.js的發展。
為什么開發人員喜歡Node.js?
以下可能是開發人員選擇Node.js原因的簡短列表:
1、快速:V8 Google Engine授權Node.js提供一個快速發布周期。這使得網絡連接,文件系統和數據庫的讀取和寫入超級快。
2、實時性:websocket協議的強大功能允許客戶端和服務器之間輕松快速通信。它是即時的,是實時應用程序的理想選擇,如聊天或游戲這類應用。
3、靈活:開發人員可以為客戶端,服務器端,后端和前端應用程序使用相同的語言(可以同時執行),它提供端到端的解決方案。
4、跨平臺支持:Node.js可以在任何操作系統上虛擬運行。這意味著Node.js可移植,所以,應用程序能夠支持廣泛的用戶受眾。
5、單線程:Node.js在不新增額外線程的情況下,依然可以對任務進行并行處理——Node.js是單線程的。它通過事件輪詢(event loop)來實現并行操作,對此,我們應該要充分利用這一點——盡可能的避免阻塞操作,取而代之,多使用非阻塞操作。
6、事件循環:Node.js使用事件循環來代替可伸縮性,而不是進程或線程。服務器在回調定義結束時自動進入事件循環。
7、社區:Node.js背后有一個強大的,多樣化的,活躍的和快速擴張的社區支持。開發人員使用Github共享成果,提出功能請求、上傳包或進行錯誤修復。
總而言之,開發人員之所以喜歡Node.js,是因為其將腳本語言(JavaScript)的易用性和有著各種框架可供選擇的Unix網絡編程的強大功能相結合了。
基于應用程序的功能,我將Node框架分為三種類型:API,全棧和類Sinatra。
API
以下框架由API驅動,是快速部署Node.js API服務器的理想選擇。
#1 Actionhero
這是一個用于Node.js的快速,輕量級和多重傳輸的API服務器,非常適合用于創建一個易于使用的工具包來制作可重用和可擴展的API。
可以提供給http sockets,tcp sockets和web sockets。actionHero.js提供創建易用的,可重用可伸縮的API工具包。客戶端連接到actionHero.js服務器就可以使用APIs,使用靜態內容和相互溝通。
actionHero.js服務器可以處理請求和任務(延遲action 比如:send e-mail或者是后臺任務)。
Github stars:1,499
Github contributors: 67
#2 Loopback
這是一個由IBM創建的高度可擴展的API框架,允許使用非常少的編碼創建動態的端到端REST API。它通過為開發人員提供一個簡單的API工具來補充Express框架。
Loopback API可以連接設備,并與Android,iOS和AngularJS SDK集成以創建客戶端應用程序。對于應用程序的圖形版本,Loopback使用StrongLoop Arc。
Github stars: 7,817
Github contributors: 80
#3 Restify
這是一個為REST API而創建的輕量級框架,它是一個通過API提供數據的服務器端框架。Restify重點關注調試和分析,以優化服務器。
Github stars: 5,966
Github contributors: 142
#4 Socket.io
該 框架的目的是支持實時web應用(例如文檔協作和數據交換)。Socket.io允許Web客戶端和服務器之間的事件驅動通信。socket.io是一個 跨平臺,多種連接方式自動切換,做即時通訊方面的開發很方便,而且能和expressjs提供的傳統請求方式很好的結合,即可以在同一個域名,同一個端口 提供兩種連接方式:request/response, websocket(flashsocket,ajax…).
Github stars: 28,887
Github contributors: 123
Full Stack
以下框架專注于全棧支持,它們涵蓋了應用程序開發的每一步,從中間件和UI到API和數據庫集成。
#5 Meteor
Meteor是用于構建實時web應用程序的模型視圖控制器(MVC)框架,其與服務器不斷同步。它是內置的一套預編寫自包含模塊,支持應用程序代碼編寫。
使用Meteor構建的應用程序可以在OS X,Windows和Linux操作系統上運行。
Github stars: 36,081
Github contributors: 321
#6 Keystone
此框架是數據庫驅動Web應用程序和API的理想選擇,其中Express,MongoDB和Mongoose是Node堆棧的關鍵組件。
Github stars: 8,352
Github contributors: 181
Sinatra-Like
以下是輕量級框架,其功能類似于Sinatra。
#7 Express
Express 是基于Node.js平臺快速、開放、極簡的web開發框架。Express是最重要的節點框架之一,是構建Web/移動應用程序和API的理想選擇。 Express不是對Node.js已有的特性進行二次抽象,只是在它之上擴展了Web應用所需的基本功能。
Github stars: 28,683
Github contributors: 192
#8 Koa
這是一個無回調的輕量級中間件框架,允許編寫Web應用程序和REST API,還可以添加新功能并自定義路徑中的內容,它支持ES6和最新的JavaScript版本。
對于Node.js的初級者來說,這不是理想的第一選擇。
Github stars: 12,779
Github contributors: 91
#9 Hapi
Hapi框架是快速構建和API測試的理想選擇,也可以使用Hapi構建完整的網站。它有一個十分不錯的插件集合,使其能夠在不破壞其余代碼庫的情況下,只在局部進行工作,對于團隊項目而言十分受用。
由于Hapi是由Walmart開發人員創建的,因此它提供了企業級功能。
Github stars: 7,015
Github contributors: 151
結語
在 幾年的時間里,Node.js逐漸發展成了一個成熟的開發平臺,吸引了許多開發者。雖然Node項目還非常年輕,但很少看到對一個項目如此狂熱的社區。不 管是新手,還是專家,大家都圍繞著項目,使用并貢獻自己的能力,致力于打造一個探索、支持、分享、聽取建議的環境。目前,有許多大型高流量網站都采用 Node.js進行開發。此外,開發人員還可以使用它來開發一些快速移動Web框架,希望Node.js可以在公司和社區的雙重努力下,發展的更好。
來自:http://www.techug.com/9-node-js-framewrok-on-github