基于阿里egg框架搭建博客(1)——開發(fā)準(zhǔn)備

相關(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框架。

官方介紹:https://eggjs.org/zh-cn/intro/index.html

環(huán)境準(zhǔn)備

  1. 安裝nodejs環(huán)境,下載地址:https://nodejs.org/en/download/
  2. 安裝腳手架,在此基礎(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.jsagent.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é)尾

如果看完覺得有用,請給作者一個喜歡吧!謝謝啦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容