相關文章
基於阿里egg框架搭建博客(1)——開發準備
基於阿里egg框架搭建博客(2)——Hello World
基於阿里egg框架搭建博客(3)——註冊與登錄
基於阿里egg框架搭建博客(4)——權限控制
基於阿里egg框架搭建博客(5)——置頂導航條
基於阿里egg框架搭建博客(6)——瀏覽、發表文章
基於阿里egg框架搭建博客(7)——編輯文章
git
https://github.com/ZzzSimon/e...
喜歡就點個贊吧!
什麼是egg.js
簡單來講就是一個基於nodejs與koa的WEB框架。
官方介紹:https://eggjs.org/zh-cn/intro...
環境準備
- 安裝nodejs環境,下載地址:https://nodejs.org/en/download/
- 安裝腳手架,在此基礎上開發,具體執行以下命令:
$ npm i egg-init -g
$ egg-init egg-blog --type=simple
$ cd egg-blog
$ npm i
非腳手架(初學者推薦)
如果是初學者,建議自己創建所有的目錄,以熟悉Egg官方所約定的規則。
官方demo:https://eggjs.org/zh-cn/intro...
腳手架
Egg 奉行『約定優於配置』,按照一套統一的約定進行應用開發,團隊內部採用這種方式可以減少開發人員的學習成本,開發人員不再是『釘子』,可以流動起來。沒有約定的團隊,溝通成本是非常高的,比如有人會按目錄分棧而其他人按目錄分功能,開發者認知不一致很容易犯錯。
如Egg官方所言,腳手架是對應用目錄做了一個規範的示範,我們在此基礎上開發能省下不少功夫。
執行完上述命令之後,我們可以看到如下的目錄結構:
egg-project
├── package.json
├── app.js (可選)
├── agent.js (可選)
├── app
| ├── router.js
│ ├── controller
│ | └── home.js
│ ├── service (可選)
│ | └── user.js
│ ├── middleware (可選)
│ | └── response_time.js
│ ├── schedule (可選)
│ | └── my_task.js
│ ├── public (可選)
│ | └── reset.css
│ ├── view (可選)
│ | └── home.tpl
│ └── extend (可選)
│ ├── helper.js (可選)
│ ├── request.js (可選)
│ ├── response.js (可選)
│ ├── context.js (可選)
│ ├── application.js (可選)
│ └── agent.js (可選)
├── config
| ├── plugin.js
| ├── config.default.js
│ ├── config.prod.js
| ├── config.test.js (可選)
| ├── config.local.js (可選)
| └── config.unittest.js (可選)
└── test
├── middleware
| └── response_time.test.js
└── controller
└── home.test.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。
結尾
如果看完覺得有用,請給作者一個喜歡吧!謝謝啦!