5 基於Koa的egg.js企業級後端框架使用

課堂目標

  1. 熟悉企業級web開發框架egg.js使用
  2. 基於Koa定製本身的企業級MVC框架

Egg.js體驗

  • 架構圖

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

  • 建立項目mysql

    // 建立項目
    
    $ npm i egg-init \-g
    
    $ egg\-init egg-example \--type\=simple
    
    $ cd egg-example
    
    $ npm i
    
    // 啓動項目
    
    $ npm run dev
    
    $ open localhost:7001
  • 瀏覽項目結構:web

    • Public
    • Router -> Controller -> Service -> Model
    • Schedule
  • 建立一個路由,router.jssql

    router.get('/user', controller.user.index);
  • 建立一個控制器,user.jsnpm

    '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爲例演示數據持久化app

    • 安裝: npm install --save egg-sequelize mysql2
    • 在 config/plugin.js 中引入 egg-sequelize 插件框架

      sequelize: {
        enable: true,
        package: 'egg-sequelize',
      }
    • 在 config/config.default.js 中編寫 sequelize 配置async

      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;
    };
相關文章
相關標籤/搜索