demo
1.Egg.js控制器基类BaseController
按照类的方式编写Controller,不仅可以让我们更好的对Controller层代码进行抽象(例如将一些统一的处理抽象成一些私有方法),还可以通过自定义Controller基类的方式封装应用中常用的方法。
我们可以将一些公用的方法封装在一个BaseController中,让其他类继承这个基类。从而可以共享其中的方法。
1.app/core/base.js 将公共的方法封装在这个基类中让其他去继承
//base.js'use strict';const Controller = require('egg').Controller;class BaseController extends Controller {async getUserInfo() {return {name: "chengchao",age: 18}}async success(url){await this.ctx.render('public/success',{url})}async error(url){await this.ctx.render('public/error',{url})}}module.exports = BaseController;
2.继承
//继承调用其中的方法const BaseController = require('../core/base');class UserController extends BaseController {async login() {await this.ctx.render('login')}async register(){await this.ctx.render('register')}async doLogin(){await this.success('/login')}async doRegister(){await this.error('/')}}module.exports = UserController;
3. view/pubic/success.html
//3s之后自动跳转<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title><meta http-equiv="refresh" content="3; url=<%= url %>"></head><body><p style="color:green">登录成功</p><p>3s后自动自动跳转到首页<a href="/">立即跳转</a></p></body></html>
