1. Express
背景:
Express, 瘋一般快速(而簡潔)的服務端JavaScript Web開發框架,基於Node.js和V8 JavaScript引擎。
Express 是一個基於 Node.js 平台的極簡、靈活的 web 應用開發框架,它提供一系列強大的特性,幫助你創建各種 Web 和移動設備應用。
豐富的 HTTP 快捷方法和任意排列組合的 Connect 中間件,讓你創建健壯、友好的 API 變得既快速又簡單。
Express 不對 Node.js 已有的特性進行二次抽象,我們只是在它之上擴展了 Web 應用所需的基本功能。
2009年6月26日,TJ Holowaychuk提交了Express的第一次commit,接下來在2010年1月2日,有660次commits的Express 0.0.1版本正式發布。TJ和Ciaron Jessup是當時最主要的兩個代碼貢獻者。
差不多5年的時間過去了,Express擁有了4,925次commit,現在Express的最新版本是4.10.1,由StrongLoop維護,因為TJ現在已經跑去玩Go了.
優點:
Express擁有的社區不僅僅是上面三者當中最大的,並且是所有Node.js web應用程序框架當中最大的。在經過其背后差不多5年的發展和在StrongLoop的掌管下,它是三者當中最成熟的框架。它為服務器啟動和運行提供了簡單的方式,並且通過內置的路由提高了代碼的復用性。
缺點:
使用Express需要手動處理很多單調乏味的任務。它沒有內置的錯誤處理。當你需要解決某個特定的問題的時候,你會容易迷失在眾多可以添加的中間件中,在Express中,你有太多方式去解決同一個問題。Express自詡為高度可配置,這有好處也有壞處,對於准備使用Express的剛入門的開發者來說,這不是一件好的事情。並且對比起其他框架來說,Express體積更大。
2. Koa
背景:
koa 是由 Express 原班人馬打造的,致力於成為一個更小、更富有表現力、更健壯的 Web 框架。使用 koa 編寫 web 應用,通過組合不同的 generator,可以免除重復繁瑣的回調函數嵌套,並極大地提升錯誤處理的效率。koa 不在內核方法中綁定任何中間件,它僅僅提供了一個輕量優雅的函數庫,使得編寫 Web 應用變得得心應手。
大概在差不多一年前的2013年8月17日,TJ Holowaychuk(又是他!)只身一人提交了Koa的第一次commit。他描述Koa為“表現力強勁的Node.js中間件,通過co使用generators使得編寫web應用程序和REST API更加絲般順滑”。Koa被標榜為只占用約400行源碼空間的框架。Koa的目前最新版本為0.13.0,擁有583次commits。
優點:
Koa有着傲人的身材(體積小),它表現力更強;對比起其他框架,它使得中間件的編寫變的更加容易。Koa基本上就是一個只有骨架的框架,你可以選擇(或者自己寫一個)中間件,而不用妥協於Express或者Hapi它們自帶的中間件。它也是唯一一個采用ES6的框架,例如它使用了ES6的generators。
缺點:
Koa有缺點嗎?
3.Hapi
背景
Hapi.js 是一個用來構建基於 Node.js 的應用和服務的富框架,使得開發者把重點放在便攜可重用的應用邏輯而不是構建架構。內建輸入驗證、緩存、認證和其他 Web 應用開發常用的功能。
2011年8月5日,WalmartLabs的一位成員Eran Hammer提交了Hapi的第一次commit。Hapi原本是Postmile的一部分,並且最開始是基於Express構建的。后來它發展成自己自己的框架,正如Eran在他的博客里面所說的:Hapi基於這么一個想法:配置優於編碼,業務邏輯必須和傳輸層進行分離...
Hapi最新版本為7.2.0,擁有3,816次commits,並且仍然由Eran Hammer維護。
優點:
Hapi自豪地宣稱它自己是基於配置優於編碼的概念,並且很多開發者認為這是一件好事。在團隊項目開發中,可以很容易地增強一致性和可復用性。作為有着大名鼎鼎的WalmartLabs支持的框架和其他響當當的企業在實際生產中使用Hapi,它已經經過了實際戰場的洗禮,企業們可以沒有擔憂地基於Hopi運行自己的應用程序。所有的跡象都表明Hapi向着成為的偉大的框架的方向持續成熟。
缺點:
Hapi絕逼適合用來開發更大更復雜的應用。但對於一個簡單的web app來說,它的可能有點兒堆砌太多樣板代碼了。而且Hapi的可供參考樣例太少了,或者說開源的使用Hapi的應用程序太少了。所以選擇它對開發者的要求更高一點,而不是所使用的中間件。
4.egg
Egg.js 是阿里開源的企業級框架,旨在幫助開發團隊和開發人員降低開發和維護成本。
egg繼承於koa,而 Egg 選擇了 Koa 作為其基礎框架,在它的模型基礎上,進一步對它進行了一些增強。
優缺點:不詳。
如果你閱讀到這里了,如果你恰巧在學習node,相信你已經知道該如何選擇了吧。
小編才疏學淺,只能帶你飛到這里了,接下來大家加油!!!
如果你在使用這些框架的過程中,有什么心得體會或好的建議,熱烈歡迎你在下面留言哈。
更多angular1/2/4、ionic1/2/3、react、vue、微信小程序、nodejs等技術文章、視頻教程和開源項目,請關注微信公眾號——全棧弄潮兒。