课堂目标
- 熟悉企业级web开发框架egg.js使用
- 基于Koa定制自己的企业级MVC框架
Egg.js体验
- 架构图
-
创建项目
// 创建项目 $ npm i egg-init \-g $ egg\-init egg-example \--type\=simple $ cd egg-example $ npm i // 启动项目 $ npm run dev $ open localhost:7001
-
浏览项目结构:
- Public
- Router -> Controller -> Service -> Model
- Schedule
-
创建一个路由,router.js
router.get('/user', controller.user.index);
-
创建一个控制器,user.js
'use strict'; const Controller = require('egg').Controller; class UserController extends Controller { async index() { this.ctx.body = [{name: 'tom'}, {name: 'jerry'}\] } } module.exports = UserController;
-
创建一个服务,./app/service/user.js
'use strict'; const Service \= require('egg').Service; class UserService extends Service { async getAll() { return \[ {name: 'tom'}, {name: 'jerry'} \] } } module.exports \= UserService;
- 使用服务,./app/controller/user.js
async index() {
const { ctx } = this;
ctx.body = await ctx.service.user.getAll();
}
-
创建模型层:以mysql + sequelize为例演示数据持久化
- 安装: npm install --save egg-sequelize mysql2
-
在 config/plugin.js 中引入 egg-sequelize 插件
sequelize: { enable: true, package: 'egg-sequelize', }
-
在 config/config.default.js 中编写 sequelize 配置
sequelize: { dialect: "mysql", host: "127.0.0.1", port: 3306, username: "root", password: "admin", database: "test" }
- 编写User模型,./app/model/user.js
module.exports = app => { const { STRING } = app.Sequelize; const User = app.model.define( "user", { name: STRING(30) }, { timestamps: false } ); return User; };
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。