课堂目标
- 熟悉企业级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;
};
|