1. 程式人生 > >Node.js框架之Egg.js

Node.js框架之Egg.js

Node.js是我前段時間接觸的一個JavaScript的服務端語言,感覺還是挺有意思的。

也許有人說,你學這麼多,學的過來嗎?或者說學的太多,專而不精,有必要這樣嗎?

其實,我個人認為,自從我進入IT界以來,我覺得對於程式設計或者是一些框架,我過去是被迫學習,現在是主動學習。其實之所以想學這麼多,除了為了應對以後的危機之外,更重要的是我對它感興趣。每個程式語言都有其適用的場景,比如Python的爬蟲和資料分析是Java所不能比擬的,或者是Java的安全方面是Python所不能比擬的。再是Python的Web自動化比Java做的要徹底要更好。從中可以看出兩門程式語言的優劣,當然了,遠遠不止這麼少。之所以說,是因為覺得多知道點東西還是好的。知道的太少,或者無知,到時就不好了。

Egg.js官方文件為:https://eggjs.org/zh-cn/intro/

建議Node.js連基本語法都不懂的,可以學習學習Node.js的菜鳥教程:http://www.runoob.com/nodejs/nodejs-tutorial.html

我個人當初接觸的時候,除了看了相關的基礎理論方面,然後就開始不斷練習了。感覺對於程式設計最好的學習方式還是動手實踐。

 

一、Egg.js是什麼?

Egg.js 為企業級框架和應用而生,幫助開發團隊和開發人員降低開發和維護成本。

 

二、設計原則

我們深知企業級應用在追求規範和共建的同時,還需要考慮如何平衡不同團隊之間的差異,求同存異。所以我們沒有選擇社群常見框架的大集市模式(整合如資料庫、模板引擎、前端框架等功能),而是專注於提供 Web 開發的核心功能和一套靈活可擴充套件的外掛機制。我們不會做出技術選型,因為固定的技術選型會使框架的擴充套件性變差,無法滿足各種定製需求。通過 Egg,團隊的架構師和技術負責人可以非常容易地基於自身的技術架構在 Egg 基礎上擴展出適合自身業務場景的框架。

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 了。

 

四、特性

五、簡單實用

npm install egg-init -g
$egg-init --type simple showcase && cd showcase
$npm install
$npm run dev

 輸入瀏覽器地址: http://localhost:7001,結果如圖:

 

小結:

最近有的時候莫明焦慮,感覺通過學習能夠減輕這種焦慮。甚至有的時候看書都不能減輕這種讓人心煩的焦慮感,唯獨敲程式碼。敲著敲著煩心事就沒有了。

雖說打遊戲也是一種放鬆方式,但是我更傾向於是覺得沒有焦慮感或者焦慮感不大的時候玩玩遊戲。焦慮感越大哪怕看電影也不能解決這種焦慮。

這種焦慮就是發現身邊的朋友一個一個比自己強大在不少領域有獨特的優勢和較好的資源,讀者們也可以理解為嫉妒。但是對於IT界來說,嫉妒是沒有意義的,唯獨不斷的努力追趕超過對方,或者超過自己。不知道,各位兄弟姐妹們有沒有這種焦慮感?

 

本文主要參考Egg.js官方網站的部分內容