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官方網站的部分內容