相關(guān)文章
基于阿里egg框架搭建博客(1)——開發(fā)準(zhǔn)備
基于阿里egg框架搭建博客(2)——Hello World
基于阿里egg框架搭建博客(3)——注冊與登錄
基于阿里egg框架搭建博客(4)——權(quán)限控制
基于阿里egg框架搭建博客(5)——置頂導(dǎo)航條
基于阿里egg框架搭建博客(6)——瀏覽、發(fā)表文章
基于阿里egg框架搭建博客(7)——編輯文章
git
https://github.com/ZzzSimon/egg-example
喜歡就點個贊吧!
什么是egg.js
簡單來講就是一個基于nodejs與koa的WEB框架。
環(huán)境準(zhǔn)備
- 安裝nodejs環(huán)境,下載地址:https://nodejs.org/en/download/
- 安裝腳手架,在此基礎(chǔ)上開發(fā),具體執(zhí)行以下命令:
$ npm i egg-init -g
$ egg-init egg-blog --type=simple
$ cd egg-blog
$ npm i
非腳手架(初學(xué)者推薦)
如果是初學(xué)者,建議自己創(chuàng)建所有的目錄,以熟悉Egg官方所約定的規(guī)則。
官方demo:https://eggjs.org/zh-cn/intro/quickstart.html#%E9%80%90%E6%AD%A5%E6%90%AD%E5%BB%BA
腳手架
Egg 奉行『約定優(yōu)于配置』,按照一套統(tǒng)一的約定進(jìn)行應(yīng)用開發(fā),團(tuán)隊內(nèi)部采用這種方式可以減少開發(fā)人員的學(xué)習(xí)成本,開發(fā)人員不再是『釘子』,可以流動起來。沒有約定的團(tuán)隊,溝通成本是非常高的,比如有人會按目錄分棧而其他人按目錄分功能,開發(fā)者認(rèn)知不一致很容易犯錯。
如Egg官方所言,腳手架是對應(yīng)用目錄做了一個規(guī)范的示范,我們在此基礎(chǔ)上開發(fā)能省下不少功夫。
執(zhí)行完上述命令之后,我們可以看到如下的目錄結(jié)構(gòu):
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 路由規(guī)則,具體參見 Router。 -
app/controller/**用于解析用戶的輸入,處理后返回相應(yīng)的結(jié)果,具體參見 Controller。 -
app/service/**用于編寫業(yè)務(wù)邏輯層,可選,建議使用,具體參見 Service。 -
app/middleware/**用于編寫中間件,可選,具體參見 Middleware。 -
app/public/**用于放置靜態(tài)資源,可選,具體參見內(nèi)置插件 egg-static。 -
app/extend/**用于框架的擴(kuò)展,可選,具體參見框架擴(kuò)展。 -
config/config.{env}.js用于編寫配置文件,具體參見配置。 -
config/plugin.js用于配置需要加載的插件,具體參見插件。 -
test/**用于單元測試,具體參見單元測試。 -
app.js和agent.js用于自定義啟動時的初始化工作,可選,具體參見啟動自定義。關(guān)于agent.js的作用參見Agent機(jī)制。
由內(nèi)置插件約定的目錄:
-
app/public/**用于放置靜態(tài)資源,可選,具體參見內(nèi)置插件 egg-static。 -
app/schedule/**用于定時任務(wù),可選,具體參見定時任務(wù)。
若需自定義自己的目錄規(guī)范,參見 Loader API
-
app/view/**用于放置模板文件,可選,由模板插件約定,具體參見模板渲染。 -
app/model/**用于放置領(lǐng)域模型,可選,由領(lǐng)域類相關(guān)插件約定,如 egg-sequelize。
結(jié)尾
如果看完覺得有用,請給作者一個喜歡吧!謝謝啦!