@purevue/compiler-core
Version:
## 📖 Introduction
65 lines • 2.7 kB
TypeScript
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