以前写过一篇介绍 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
复制代码