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

73 lines
1.5 KiB
Markdown

# 概述
初始化的空插件,服务端相关目录结构如下:
```bash
|- /my-plugin
|- /src
|- /server # 插件服务端代码
|- plugin.ts # 插件类
|- index.ts # 服务端入口
|- server.d.ts
|- server.js
```
`plugin.ts` 提供了插件生命周期的各种方法的调用
```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;
```