生命周期函数 Lifecycle Functions

Strapi 包含控制应用程序流程的生命周期函数(例如注册、引导和销毁)。

./src/index.js 文件(或基于 TypeScript 的项目中的 ./src/index.ts 文件)包含全局 registerbootstrapdestroy 函数,可用于添加动态和基于逻辑的配置。

这些函数可以是同步的、异步的,也可以返回一个承诺。

mermaid
flowchart TB
    A([The Strapi application starts.]) --> B{"register()"}
    B -- The Strapi application is setup. --> C
    C{"bootstrap()"} -- The Strapi back-end server starts. --> D
    D(Request)
    D
    click B "#register"
    click C "#bootstrap"
    click D "/dev-docs/backend-customization/requests-responses"

Synchronous function

js
Javascript
js
module.exports = {
  register() {
    // some sync code
  },
  bootstrap() {
    // some sync code
  },
  destroy() {
    // some sync code
  }
}

Asynchronous function

js
Javascript
js
module.exports = {
  async register() {
    // some async code
  },
  async bootstrap() {
    // some async code
  },
  async destroy() {
    // some async code
  }
}

Function returning a promise

js
Javascript
js
module.exports = {
  register() {
    return new Promise(/* some code */)
  },
  bootstrap() {
    return new Promise(/* some code */)
  },
  destroy() {
    return new Promise(/* some code */)
  }
}

Register

register 生命周期函数位于 ./src/index.js(或 ./src/index.ts)中,是一个在应用程序初始化之前运行的异步函数。 它可用于:

register() 是 Strapi 应用程序启动时发生的第一件事。这发生在任何设置过程之前,并且您无法访问“register()”函数中的数据库、路由、策略或任何其他后端服务器元素。

Bootstrap

bootstrap 生命周期函数位于 ./src/index.js(或 ./src/index.ts)中,每次服务器启动时都会调用该函数。

它可用于:

bootstrapi() 函数在后端服务器启动之前但在 Strapi 应用程序设置之后运行,因此您可以从 strapi 对象访问任何内容。

您可以在终端中运行 yarn strapi console(或 npm run strapi console)并与 strapi 对象交互。

销毁

destroy 函数位于 ./src/index.js(或 ./src/index.ts)中,是一个在应用程序关闭前运行的异步函数。

它可用于正常使用: