Eggjs笔记:控制器基类的封装和控制器兼容写法

本文探讨了Egg.js框架下控制器(BaseController)的设计思路与实现方式,介绍了如何通过自定义基类来封装应用中常用的方法,提高代码复用性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值