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

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

 

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

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

Express 和 Koa 是 Node.js 社區普遍使用的框架,簡單且擴展性強,很是適合作我的項 目。但框架自己缺乏約定,標準的 MVC 模型會有各類千奇百怪的寫法。Egg 按照約定進行 開發,奉行『約定優於配置』,團隊協做成本低。github

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

Egg.js 的特性:json

一、提供基於 Egg 定製上層框架的能力瀏覽器

二、高度可擴展的插件機制app

三、內置多進程管理
框架

四、基於 Koa 開發,性能優異koa

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

六、漸進式開發

 

環境準備

操做系統:支持 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 上,有興趣的小夥伴能夠參考一下。

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

相關文章
相關標籤/搜索