模板系统
了解模板系统的整体架构
模板决定了生成代码的结构、风格和请求方式。在 worma 中,模板通过插件的 getTemplate hook 获取,使用 Handlebars 语法渲染。
工作原理
模板系统基于插件的 getTemplate 生命周期 hook 实现。每个插件都可以在 getTemplate 中返回模板配置(TemplateConfigResult),指定模板路径:
interface TemplateConfigResult {
// 模板路径,相对路径相对于 process.cwd()
path: string;
}// 插件通过 getTemplate 返回模板配置
{
name: 'my-template-plugin',
getTemplate({ config, projectPath }) {
return { path: './templates/my-api' };
},
}多个插件都可以返回模板配置,以最后一个有效的返回值为准。内置模板插件(如 alova、axios)已预设了 getTemplate hook,直接配置到 plugins 即可使用:
import { alova, axios } from 'wormajs/plugin';
export default defineConfig({
generator: [
{
input: 'https://api.example.com/openapi.json',
output: 'src/api',
plugins: [alova()], // alova 插件自带 getTemplate,返回 alova 模板
},
],
});Handlebars 模板
模板使用 Handlebars 语法编写,在代码生成阶段,worma 将解析后的 OpenAPI 数据注入为模板变量,渲染出最终代码。核心变量包括:
apis— 所有 API 接口数据config— 生成器配置(插件可在beforeCodeGenerate中注入额外数据)tags— API 分组标签
{{! 示例:遍历 API 生成函数 }}
{{#each apis}}
export function {{name}}(params: {{name}}Params) {
return request<{{name}}Response>('{{method}}', '{{path}}', params);
}
{{/each}}模板支持动态文件名({tag}、{api})、partials 引用、以及按模块类型(index / api / types / ai-doc)区分不同模板文件。
两种使用方式
worma 提供了两种模板使用路径: