Skip to content

插件基础

重要提示:Yumeri 框架目前处于快速迭代阶段。

编写你的插件

typescript
import { Context, Config, Session } from 'yumeri';

// 声明依赖的组件
export const depend = ['database', 'user'];

export async function apply(ctx: Context, config: Config) {
  ctx.route('/foo').action(async (session) => {
    session.respond('Hello', 'plain');
  });
}
typescript
import { Session, Context } from 'yumeri';
import { Plugin, Get, Inject } from '@yumerijs/decorator';

// 声明依赖的组件
export const depend = ['database'];

@Plugin
export default class MyPlugin {
  @Inject('database')
  db: any;

  @Get('/foo')
  async action(session: Session) {
    session.respond('Hello', 'plain');
  }
}

依赖管理

如果你的插件依赖于其他插件提供的组件,你必须在入口文件中导出一个名为 depend 的字符串数组。

typescript
export const depend = ['database', 'logger'];

每个字符串对应所依赖的组件名称。即使在装饰器模式下使用了 @Inject 装饰器,这个 depend 导出依然是必需的。它决定了插件的加载顺序,确保被依赖的组件在你的插件实例化之前已经准备就绪。