UNPKG

@purevue/compiler-core

Version:

## 📖 Introduction

65 lines 2.7 kB
import { type TemplateChildNode, type InterpolationNode, type RootNode, type CallExpression, type CodegenNode } from '../types'; import type { CodegenOptions } from '../ast'; /** * Codegen 阶段:将 transform 阶段生成的带 codegenNode 的 AST * 转换为最终的渲染函数源码字符串。 */ /** * Codegen 上下文,维护代码缓冲、缩进、辅助函数引用等状态 */ interface CodegenContext { /** * 代码生成模式: * - 'function' 表示生成渲染函数(适用于运行时编译模式) * - 'module' 表示生成 ES 模块 import/export(适用于打包模式/预编译) */ mode: 'function' | 'module'; /** 模板源代码字符串,可用于调试或生成代码时引用 */ source: string; /** 最终生成的代码字符串 */ code: string; /** 运行时模块名称,用于生成 import 或 require 语句 */ runtimeModuleName: string; /** 运行时全局变量名,用于运行时编译模式下访问 Vue 对象 */ runtimeGlobalName: string; /** 向代码缓冲中追加代码 */ push: (source: string) => void; /** 添加换行符并缩进 */ newline: () => void; /** 增加缩进级别 */ indent: () => void; /** 减少缩进级别 */ deindent: () => void; /** 获取 runtime helper 的本地引用 */ helper(key: symbol | string): string; } /** * Codegen 结果接口 */ export interface CodegenResult { code: string; preamble: string; ast: RootNode; } /** * 生成渲染函数的入口函数 * @param root 已经经过 transform 的 Root AST,包含 codegenNode 与 helpers * @returns 生成的渲染函数源码字符串 */ export declare function generate(root: RootNode, options?: CodegenOptions): CodegenResult; /** * 生成函数调用表达式的代码 * @param node 要生成的 CallExpression AST 节点 * @param context Codegen 上下文,包含 push、helper、pure 等信息 */ export declare function genCallExpression(node: CallExpression, context: CodegenContext): void; /** * 生成节点列表代码,用于函数调用、数组参数或对象属性等场景 * @param nodes 节点列表,可以是字符串、symbol、CodegenNode 或嵌套的 TemplateChildNode 数组 * @param context Codegen 上下文,包含 push、newline、helper 等方法 * @param multilines 是否多行输出(每个节点换行) * @param comma 是否在节点之间加逗号 */ export declare function genNodeList(nodes: (string | symbol | CodegenNode | TemplateChildNode[] | InterpolationNode)[], context: CodegenContext, multilines?: boolean, comma?: boolean): void; export {}; //# sourceMappingURL=index.d.ts.map