egg簡介
egg 為企業(yè)級框架和應用而生
Egg官網(wǎng)
開發(fā)模式
- 漸進式開發(fā)
歷史
2011 年的就已經(jīng)開始在生產(chǎn)環(huán)境中使用Node。
2013 年螞蟻的 chair 框架拗踢,可以視為 egg 的前身腕窥。
2016 年初怯伊,各 BU 的基礎 web 框架完成升級肆糕,在同一套規(guī)范的基礎上進行差異化定制吊档。
2016 年中篙议,廣泛使用在絕大部分阿里的前端 Node.js 應用
2017 年初,官網(wǎng)文檔 egg - 為企業(yè)級框架和應用而生 亮相,并將在本月發(fā)布 egg@1.0 版.
螞蟻金服鬼贱,天貓移怯,UCWeb,村淘这难,神馬等 BU 的業(yè)務場景千差萬別舟误,但他們的基礎框架都是在egg之上擴展的
知乎
egg2
Egg 的插件機制有很高的可擴展性,一個插件只做一件事(比如 Nunjucks 模板封裝成了 egg-view-nunjucks姻乓、MySQL 數(shù)據(jù)庫封裝成了 egg-mysql)嵌溢。Egg 通過框架聚合這些插件,并根據(jù)自己的業(yè)務場景定制配置蹋岩,這樣應用的開發(fā)成本就變得很低赖草。
Egg 奉行『約定優(yōu)于配置』,按照一套統(tǒng)一的約定進行應用開發(fā)星澳,團隊內(nèi)部采用這種方式可以減少開發(fā)人員的學習成本疚顷,開發(fā)人員不再是『釘子』,可以流動起來禁偎。沒有約定的團隊腿堤,溝通成本是非常高的,比如有人會按目錄分棧而其他人按目錄分功能如暖,開發(fā)者認知不一致很容易犯錯笆檀。但約定不等于擴展性差,相反 Egg 有很高的擴展性盒至,可以按照團隊的約定定制框架酗洒。使用 Loader 可以讓框架根據(jù)不同環(huán)境定義默認配置,還可以覆蓋 Egg 的默認約定枷遂。
基于koa2
-
異步編程模型_async&await function
通過同步方式編寫異步代碼帶來的另外一個非常大的好處就是異常處理非常自然樱衷,使用 try catch 就可以將按照規(guī)范編寫的代碼中的所有錯誤都捕獲到。
-
Middleware_洋蔥圈模式
所有的請求經(jīng)過一個中間件的時候都會執(zhí)行兩次酒唉,對比 Express 形式的中間件矩桂,Koa 的模型可以非常方便的實現(xiàn)后置處理邏輯
-
context
Context 作為請求的上下文對象,request痪伦、response以及參數(shù)處理結(jié)果都掛在上面侄榴。同樣我們可以將一次請求相關(guān)的上下文都掛載到這個對象上。需要貫穿整個請求(在后續(xù)任何一個地方進行其他調(diào)用都需要用到)的屬性就可以掛載上去网沾。
內(nèi)置功能
power-assert |測試
Mocha |測試
HttpClient
Cookie 與 Session
egg-cluster |多進程與進程守護
插件機制
-
內(nèi)置企業(yè)級插件
onerror |錯誤處理
session |會話
i18n |國際化
watcher |文件監(jiān)控
multipart |文件接收
security |安全
development |開發(fā)
logrotator |日志整理
schedule |定時事物
static |靜態(tài)資源服務
jsonp |跨域
view |MVC架構(gòu)的V
-
生態(tài)插件庫
egg-mongoose |MongooDB
egg-mongodb-native |MongooDB
egg-mysql |mysql
egg-redis
egg-oss |OSS
egg-bodyparser |body解析器
egg-RESTfulAPI |restfulAPI
egg-grpc |通信服務
egg-egg-cors |跨域資源共享
egg-egg-userrole |授權(quán)
egg-passport |認證
egg-passport-local |認證
egg-nunjucks |模板
egg-vue-webpack-dev
egg-view-vue
egg-view-vue-ssr
egg-socket_io |即時通信
egg-Dingtalk |釘釘
egg-Dingtalk-robot
egg-wechat-API |微信
egg-weapp-sdk |微信