Modern.js 采用高度可扩展的插件化架构,其核心功能和扩展能力均通过插件实现。插件系统不仅保证了框架的灵活性,也为开发者提供了强大的定制化手段。本文将重点介绍如何编写 Modern.js 插件,帮助您快速上手插件开发。
Modern.js 秉承“一切皆插件”的设计哲学,将框架的各项功能模块化,通过插件的形式进行组装和扩展。这种设计带来了诸多优势,包括:
Modern.js 提供了三种主要插件类型,分别对应应用开发的不同阶段:
CLI 插件:
modern
命令时)。modern.config.ts
中的 plugins
字段。Runtime 插件:
src/modern.runtime.ts
中的 plugins
字段。一个典型的 Modern.js 插件包含以下几个关键部分:
字段说明:
name
string
后续 pre
, post
, required
中声明的插件名称都是这里的 name 字段.
setup
(api: PluginAPI) => MaybePromise<void>
api
PluginAPI
pre
string[]
pre
中声明的插件会在此插件之前执行。post
string[]
post
中声明的插件会在此插件之后执行。required
string[]
如果在 pre
或 post
中配置了未注册的插件名,这些插件名将被自动忽略,不会影响其他插件的执行。
如果需要明确声明当前插件依赖的插件必须存在,需要使用 required
字段。
usePlugins
Plugin
usePlugins
中声明的插件默认在当前插件之前执行。需要在其后执行,请使用 post
声明。
registryHooks
类型: Record<string, PluginHook<(...args: any[]) => any>>
说明:扩展当前支持的 Hook 函数,以实现自定义功能。
Modern.js 插件系统的核心是其 Hook 模型,它定义了插件之间的通信机制。Modern.js 主要提供两种 Hook 类型:
async/await
。createAsyncHook
创建。示例:
createSyncHook
创建。示例:
plugin-xxx
或 @scope/plugin-xxx
).遵循这些最佳实践, 可以帮助您开发出高质量、易维护、易使用的 Modern.js 插件。