Egg.js 升级你的生命周期事件函数

🌙
手机阅读
本文目录结构

为了使得大家更方便地控制加载应用和插件的时机,我们对 Loader 的生命周期函数进行了精简处理。概括地说,生命周期事件目前总共可以分成两种形式:

  1. 函数形式(已经作废,仅为兼容保留)。
  2. 类形式(推荐使用)。

beforeStart 函数替代

我们通常在 app.js 中通过 module.export 中传入的 app 参数进行此函数的操作,一个典型的例子:

module.exports = app => {
    app.beforeStart(async () => {
        // 此处是你原来的逻辑代码
    });
};

现在升级之后的写法略有改变 —— 我们可以直接在 app.js 中用类方法的形式体现出来:对于应用开发而言,我们应该写在 willReady 方法中;对于插件则写在 didLoad 中。形式如下:

// app.js 或 agent.js 文件:
class AppBootHook {

  constructor(app) {
    this.app = app;
  }

  async didLoad() {
    // 请将你的插件项目中 app.beforeStart 中的代码置于此处。
  }

  async willReady() {
    // 请将你的应用项目中 app.beforeStart 中的代码置于此处。
  }
}

module.exports = AppBootHook;

ready 函数替代

同样地,我们之前在 app.ready 中处理我们的逻辑:

module.exports = app => {
   app.ready(async () => {
   // 此处是你原来的逻辑代码
});
};

现在直接用 didReady 进行替换:

// app.js 或 agent.js 文件:
class AppBootHook {

  constructor(app) {
    this.app = app;
  }

  async didReady() {
    // 请将您的 app.beforeStart 中的代码置于此处。
  }
}

module.exports = AppBootHook;

beforeClose 函数替代

原先的 app.beforeClose 如以下形式:

module.exports = app => {
    app.beforeClose(async () => {
        // 此处是你原来的逻辑代码
    });
};

现在我们只需使用类方法 beforeClose 替代即可:

// app.js 或 agent.js 文件:
class AppBootHook {

  constructor(app) {
    this.app = app;
  }

   async beforeClose() {
    // 请将您的 app.beforeClose 中的代码置于此处。
  }
}

其它说明

本教程只是一对一地讲了替换方法,便于开发者们快速上手进行替换;若想要具体了解整个 Loader 原理以及生命周期的完整函数版本,请参考加载器启动自定义两篇文章。

axihe
axihe

AXIHE / 精选教程

浏览全部教程

HTML

CSS

JS

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili 和抖音。

关注我: Github / 知乎

如果你加我的私人微信,麻烦写上您的 称呼,所在地区,职业,方便我备注,谢谢


本站的微信公众号

阿西河前端教程

Anbang

安邦的私人微信

微信号: yaolushan

Anbang

Bilibili(B站)

朱安邦

Anbang

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

axihe