TypeScript Plugin Runtime
Pluxel
写一个 class,用构造函数注入能力;配置、HTTP route 和资源清理都放在固定位置,开发期直接热更新。
import { HealthPlugin } from '@acme/health' // 值导入:提供必需依赖的来源
import type { AuditPlugin } from '@acme/audit' // 类型导入:不会加载可选插件
const Audit = definePluginRef<AuditPlugin>() // 模块级引用:声明可选依赖
@Plugin()
class StatusPlugin extends BasePlugin {
constructor(readonly health: HealthPlugin) { super() } // 构造器参数:注入必需依赖
protected override init() {
// init 中的直接语句:消费可选依赖
this.plugins.use(Audit, (audit) => audit.attach(this))
}
status() { return this.health.status() } // 直接调用必需依赖
}直接看日常写法
写 Plugin 最常用的三个位置
01
注入依赖
constructor(private readonly http: WretchPlugin) { super() }需要另一个 Plugin 时,直接写构造函数参数。类型就是依赖声明。
阅读文档02
读取配置
private readonly config = this.configs.use(StatusConfig)读取经过默认值和校验的冻结配置,不再维护平行的 TypeScript interface。
阅读文档03
登记清理
this.ctx.effects.defer(() => clearInterval(timer))创建资源后立即登记释放函数;停止、替换和启动回滚都会执行。
阅读文档最后放进宿主