Egg.js 控制器基类 BaseController
-
按照类的方式编写 Controller,不仅可以让我们更好的对 Controller 层代码进行抽象
-
例如将一些统一的处理抽象成一些私有方法,还可以通过自定义 Controller 基类的方式封装应用中常用的方法
-
官方要求在app/core中配置核心方法
// app/core/base.js const { Controller } = require('egg'); class BaseController extends Controller { get user() { return this.ctx.session.user; } success(data) { this.ctx.body = { success: true data }; } notFound(msg) { msg = msg || 'not found'; this.ctx.throw(404, msg); } } module.exports = BaseController; // 继承core/base const BaseController = require('../core/base'); class PostController extends BaseController { async list() { const posts = await this.service.listByUser(this.user); this.success(posts); } } module.exports = PostController;
Egg.js 控制器兼容写法
官方不推荐使用,只是为了兼容
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
// 这里讲context对象通过参数的形式传递过来
// 推荐的写法是:const { ctx } = this; 或者 this.ctx
async index(ctx) {
await ctx.render('home');
}
}
module.exports = HomeController;