一些基於nodejs的服務端框架對比。express、koa、egg、nest、midway_Nicker_的專欄-程序員信息網_egg express koa


一些基於nodejs的服務端框架對比。express、koa、egg、nest、midway_Nicker_的專欄-程序員信息網_egg express koa

技術標簽: serverless framework  服務器  nodejs  webserver  

 

一些基於nodejs的服務端框架對比。

express、koa、egg、nest、midway都是常見的nodejs開源框架。
其關系,基本如下:

Midway.js ---|> Egg.js ---|> Koa.js, Nest.js ---|> Express.js 

而koa實際上是express團隊用新理念重寫的,從架構上講,更加先進一些。
midway.js和egg.js背后都是阿里的團隊,其架構基於koa。
nest.js背后是國外的Trilon團隊,其架構基於express。

Express

Express 是一個保持最小規模的靈活的 Node.js Web 應用程序開發框架,為 Web 和移動應用程序提供一組強大的功能。
github:https://github.com/expressjs/express
中文官網:https://www.expressjs.com.cn/

Koa

koa 是由 Express 原班人馬打造的,致力於成為一個更小、更富有表現力、更健壯的 Web 框架。使用 koa 編寫 web 應用,通過組合不同的 generator,可以免除重復繁瑣的回調函數嵌套,並極大地提升錯誤處理的效率。koa 不在內核方法中綁定任何中間件,它僅僅提供了一個輕量優雅的函數庫,使得編寫 Web 應用變得得心應手。
在這里插入圖片描述
koa是一個擁有洋蔥模型中間件的http處理庫,一個請求,經過一系列的中間件,最后生成響應。Koa的大致實現原理:context上下文的保存和傳遞,中間件的管理和next方法的實現。

所以koa的開發過程中,往往要引用他人開發的中間件,或是自己開發中間件,然后再開發業務邏輯。

中文官網:https://www.koajs.com.cn/

nest.js

nest是一個封裝了node的有規范的框架,什么是有規范?意思是必須按照它制定的一套規則來寫代碼,否則程序就會無法運行。上手成本稍高一點,但是后期維護與擴展會很方便。

nest屬於前端ts大趨勢下深度使用注解特性並提供各種增強開發體驗的框架,它提供了一套完整的解決方案,包含了認證、數據庫、路由、http狀態碼、安全、配置、請求等開箱即用的技術。

官網:https://nestjs.com/
中文文檔:https://nestjs.bootcss.com/

Egg.js

為企業級框架和應用而生。
基於nodejs和koa.js。
相對而言,如果要做nodejs的服務,建議學習Egg,比起直接用Express或者koa,可以少造很多輪子。在此基礎上,根據實際需要,可以去學習midway。

特點:
Egg 的插件機制有很高的可擴展性,一個插件只做一件事(比如 Nunjucks 模板封裝成了 egg-view-nunjucks、MySQL 數據庫封裝成了 egg-mysql)。Egg 通過框架聚合這些插件,並根據自己的業務場景定制配置,這樣應用的開發成本就變得很低。
Egg 奉行『約定優於配置』,按照一套統一的約定進行應用開發,團隊內部采用這種方式可以減少開發人員的學習成本,開發人員不再是『釘子』,可以流動起來。沒有約定的團隊,溝通成本是非常高的,比如有人會按目錄分棧而其他人按目錄分功能,開發者認知不一致很容易犯錯。但約定不等於擴展性差,相反 Egg 有很高的擴展性,可以按照團隊的約定定制框架。使用 Loader 可以讓框架根據不同環境定義默認配置,還可以覆蓋 Egg 的默認約定。

對比:
Express 是 Node.js 社區廣泛使用的框架,簡單且擴展性強,非常適合做個人項目。但框架本身缺少約定,標准的 MVC 模型會有各種千奇百怪的寫法。Egg 按照約定進行開發,奉行『約定優於配置』,團隊協作成本低。
Sails 是和 Egg 一樣奉行『約定優於配置』的框架,擴展性也非常好。但是相比 Egg,Sails 支持 Blueprint REST API、WaterLine 這樣可擴展的 ORM、前端集成、WebSocket 等,但這些功能都是由 Sails 提供的。而 Egg 不直接提供功能,只是集成各種功能插件,比如實現 egg-blueprint,egg-waterline 等這樣的插件,再使用 sails-egg 框架整合這些插件就可以替代 Sails 了。

官網:https://eggjs.org/zh-cn/
文檔:https://eggjs.org/zh-cn/intro/index.html
github:https://github.com/eggjs/egg

Midway.js

midwayjs一個面向未來的雲端一體 Node.js 框架。
Midway 是一個適用於構建 Serverless 服務,傳統應用、微服務,小程序后端的 Node.js 框架。

使用TypeScript開發
Midway (中途島) 是淘系架構團隊(前淘寶UED)研發的一款面向未來的的 Node.js 框架。在大規模編程和 Serverless 等多種場景中,Midway 通過 TypeScript 和完全自研的依賴注入能力,將用戶體驗打造到極致。

Midway 2.0 集成了 Serverless 能力,同時擴展了 RPC、Socket、微服務等場景,並在其中提供和前端一體化研發的能力,不同的場景之間可以組合、協作,給用戶提供相對靈活又可靠的使用體驗。

Midway給人一種框架的框架的感覺。
Midway可以結合其他框架使用,把Egg.js或者是Koa或者是Express作為其上層Web框架。

官網:https://www.midwayjs.org/
文檔:Midway(v2)
github:https://github.com/midwayjs/midway


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM