tachybase_todo/docs/zh-CN/development/server/index.md
2022-11-06 09:01:55 +08:00

1.5 KiB

概述

初始化的空插件,服务端相关目录结构如下:

|- /my-plugin
  |- /src
    |- /server      # 插件服务端代码
      |- plugin.ts  # 插件类
      |- index.ts   # 服务端入口
  |- server.d.ts
  |- server.js

plugin.ts 提供了插件生命周期的各种方法的调用

import { InstallOptions, Plugin } from '@nocobase/server';

export class MyPlugin extends Plugin {
  afterAdd() {
    // 插件 pm.add 注册进来之后。主要用于放置 app beforeLoad 事件的监听
    this.app.on('beforeLoad');
  }
  beforeLoad() {
    // 自定义类或方法
    this.db.registerFieldTypes()
    this.db.registerModels()
    this.db.registerRepositories()
    this.db.registerOperators()
    // 事件监听
    this.app.on();
    this.db.on();
  }
  async load() {
    // 定义 collection
    this.db.collection();
    // 导入 collection
    this.db.import();
    this.db.addMigrations();

    // 定义 resource
    this.resourcer.define();
    // resource action
    this.resourcer.registerActions();

    // 注册 middleware
    this.resourcer.use();
    this.acl.use();
    this.app.use();

    // 自定义多语言包
    this.app.i18n.addResources();
    // 自定义命令行
    this.app.command();
  }
  async install(options?: InstallOptions) {
    // 安装逻辑
  }
  async afterEnable() {
    // 激活之后
  }
  async afterDisable() {
    // 禁用之后
  }
  async remove() {
    // 删除逻辑
  }
}

export default MyPlugin;