Egg 企業級應用開發框架的搭建


在之前的文章中我們介紹了一下基於 nodejs 開發的 koa2 框架,在之前還有 espress 框架,接下來我們再學習一個 Egg.js.

 

Egg.js 中文官網:https://eggjs.org/zh-cn/

Egg.js 是《阿里旗下產品》基於 Node.js 和 Koa 是一個 Nodejs 的企業級應用開發框架。 可以幫助發團隊和開發人員降低開發和維護成本。

Express 和 Koa 是 Node.js 社區廣泛使用的框架,簡單且擴展性強,非常適合做個人項 目。但框架本身缺少約定,標准的 MVC 模型會有各種千奇百怪的寫法。Egg 按照約定進行 開發,奉行『約定優於配置』,團隊協作成本低。

Egg.js 基於 Es6、Es7 以及 Typescript、Koa2 使得 Nodejs 具有更規范的開發模式、更低 的學習成本、更優雅的代碼、更少的開發成本、更少的維護成本。為企業級框架而生。

Egg.js 的特性:

1、提供基於 Egg 定制上層框架的能力

2、高度可擴展的插件機制

3、內置多進程管理

4、基於 Koa 開發,性能優異

5、框架穩定,測試覆蓋率高

6、漸進式開發

 

環境准備

操作系統:支持 macOS,Linux,Windows

運行環境:Nodejs 建議選擇 LTS 版本,Nodejs 最低要求 8.x。

快速初始化

我們推薦直接使用腳手架,只需幾條簡單指令,即可快速生成項目:

mkdir egg-example && cd egg-example
npm init egg --type=simple
npm i

啟動項目:

npm run dev

然后打開 127.0.0.1:7001 即可:

我們按照上面的操作指令就會在我們本地快速創建一個 Egg 框架,目錄如下:

上圖就是我們快速搭建的一個 Egg 目錄,其中

app 目錄是我們開發項目的配置文件,控制器、服務等都在這個里面開發,

config 目錄是我們整個插件和項目的配置文件,

node_modules 目錄是我們所以依賴的 node 模塊的文件,test 目錄是一個測試目錄

.autod.conf.js 是 egg 調用的一個配置文件

.eslintignore.js 是代碼格式化忽略的配置文件

.eslintrc.js 是代碼格式化的配置文件

.gitignore 是 git 上傳忽略的文件

.travis.yml 和 appveyor.yml 也是相關配置文件,我們不需要管理

package.json 和 package-lick.json 是我們當前項目的一些配置依賴文件

README.md 是項目閱讀說明文件

 

Egg.js 為我們規定了我們的項目目錄及各個模塊需要防止的位置,如下:

 

  • app/router.js 用於配置 URL 路由規則,具體參見 Router
  • app/controller/** 用於解析用戶的輸入,處理后返回相應的結果,具體參見 Controller
  • app/service/** 用於編寫業務邏輯層,可選,建議使用,具體參見 Service
  • app/middleware/** 用於編寫中間件,可選,具體參見 Middleware
  • app/public/** 用於放置靜態資源,可選,具體參見內置插件 egg-static
  • app/extend/** 用於框架的擴展,可選,具體參見框架擴展
  • config/config.{env}.js 用於編寫配置文件,具體參見配置
  • config/plugin.js 用於配置需要加載的插件,具體參見插件
  • test/** 用於單元測試,具體參見單元測試
  • app.js 和 agent.js 用於自定義啟動時的初始化工作,可選,具體參見啟動自定義。關於agent.js的作用參見Agent機制

由內置插件約定的目錄:

  • app/public/** 用於放置靜態資源,可選,具體參見內置插件 egg-static
  • app/schedule/** 用於定時任務,可選,具體參見定時任務

若需自定義自己的目錄規范,參見 Loader API

  • app/view/** 用於放置模板文件,可選,由模板插件約定,具體參見模板渲染
  • app/model/** 用於放置領域模型,可選,由領域類相關插件約定,如 egg-sequelize

Egg 內部運行機制如下:

 

接下來我們隊 Egg 內部的初始代碼進行一下分析:

我們在運行項目后再瀏覽器輸入 127.0.0.1:7001 后就可以訪問項目,那他是怎么運行的呢? 

 當我們訪問 127.0.0.1:7001/ 時,頁面通過 router.js 進行路由匹配,匹配到 "/",然后再通過 controller 去匹配 home.js 下的 index() 方法,然后通過 this.ctx.body 輸出 "hi, egg",頁面就呈現出 "hi egg"。這是我們只是做了簡單的分析,里面的有些語法,如 ctx.body 可以看之前說的 koa 相關文章。

 項目啟動后我們就可以對項目進行完善了開發了,在這里就不過多說明了,本人自己做了一些 demo,包括 靜態資源處理,get,post 傳值,路由等,放在了個人的 gitee 上,有興趣的小伙伴可以參考一下。

好記性不如爛筆頭,特此記錄,與君共勉!

 

 

 

 

 

 

 

 


免責聲明!

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



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