以前寫過一篇介紹 Midway 的文章,文中提到了要作 Midway 實戰,思來想去沒什麼項目可寫,因此直接借鑑 CNode 社區將其用 Egg.js 構建的論壇網站使用 Midway 重構一遍,由於 Midway 自己也是基於 Egg.js 因此重構並非很困難。大部分代碼均可以直接使用。javascript
首先,先使用 Midway-init 工具建立一個 Midway 應用的目錄結構html
$ npm install midway-init -g
$ midway-init
// 可使用 --type 指定模板名
$ midway-init --type midway-ts-ant-design-pro
複製代碼
建立完的 Midway 目錄以下前端
.
├── README.md
├── README.zh-CN.md
├── dist ---- 編譯後目錄
├── logs ---- 本地日誌目錄
│ └── midway6-test ---- 日誌應用名開頭
│ ├── common-error.log ---- 錯誤日誌
│ ├── midway-agent.log ---- agent 輸出的日誌
│ ├── midway-core.log ---- 框架輸出的日誌
│ ├── midway-web.log ---- koa 輸出的日誌
│ └── midway6-test-web.log
├── package.json
├── src ---- 源碼目錄
│ ├── app ---- web 層目錄
│ │ ├── controller ---- web 層 controller 目錄
│ │ │ ├── home.ts
│ │ │ └── user.ts
│ │ ├── middleware (可選) ---- web 層中間件目錄
│ │ │ └── trace.ts
│ │ ├── public (可選) ---- web 層靜態文件目錄,能夠配置
│ │ ├── view (可選)
│ │ | └── home.tpl ---- web 層模板
│ ├── config
│ │ ├── config.default.ts
│ │ ├── config.local.ts
│ │ ├── config.prod.ts
│ │ ├── config.unittest.ts
│ │ └── plugin.ts
│ └── lib ---- 業務邏輯層目錄,自由定義
│ │ └── service ---- 業務邏輯層,自由定義
│ │ └── user.ts
│ ├── interface.ts ---- 接口定義文件,自由定義
│ ├── app.ts ---- 應用擴展文件,可選
│ └── agent.ts ---- agent 擴展文件,可選
├── test
│ └── app
│ └── controller
│ └── home.test.ts
├── tsconfig.json
└── tslint.json
複製代碼
咱們先經過命令,安裝一下依賴,而後經過 npm scripts
來驅動命令java
$ npm install
$ npm run dev
複製代碼
當經過 npm run dev
啓動時終端會輸出一些信息,在看到相似以下信息而且程序沒有異常退出,則是啓動成功了git
2019-07-25 13:47:17,662 INFO 45506 [master] midway started on http://127.0.0.1:7001 (4523ms)
// 經過 Curl 測試
$ curl 127.0.0.1:7001
Welcome to midwayjs!
複製代碼
咱們先將 CNode 的前端資源和頁面,遷移到咱們 Midway 的目錄下。 將 CNode 項目目錄 APP 目錄下的 public 目錄裏面的全部文件,複製到咱們剛剛新建的項目的 src/app/public
目錄下。github
$ cd /src/app/public
$ ls
README.md images javascripts stylesheets
github-card.html img libs upload
複製代碼
而後將 CNode views 目錄下的全部文件,複製到咱們剛剛新建的項目的 /src/app/view
目錄下,若是這個目錄不存在,請先新建一個。web
$ cd /src/app/view
$ ls
_ads.html index.html reply static
_sponsors.html layout.html search topic
editor_sidebar.html message sidebar.html user
includes notify sign
複製代碼
CNode 使用 redis 和 Mongodb,因此咱們安裝一下 redis 和 MongoDB 插件。redis
// 使用採用 Egg 插件機制封裝的 redis,以及 Mongodb 的 ODM 框架 Mongoose
npm install egg-mongoose --save
npm install egg-redis --save
複製代碼