2

课堂目标

  1. 熟悉企业级web开发框架egg.js使用
  2. 基于Koa定制自己的企业级MVC框架

Egg.js体验

  • 架构图

Snipaste_2019-12-19_13-58-47.png

  • 创建项目

    // 创建项目
    
    $ 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;
    };

曦沙飞舞
673 声望15 粉丝

爱前端,爱生活


引用和评论

0 条评论