/** * target-js 的代码生成器 * * 从 renderer AST 生成 JavaScript 源代码。 */ import { SanProject } from '../models/san-project'; import { SanSourceFile, DynamicSanSourceFile } from '../models/san-source-file'; import { Renderer } from '../models/renderer'; import { TargetCodeGenerator } from '../models/target-code-generator'; import { RenderOptions } from '../compilers/renderer-options'; import { CompileOptions } from './compilers/compile-options'; export default class ToJSCompiler implements TargetCodeGenerator { private project; constructor(project: SanProject); /** * 编译到 JS Render 源码 * * @param sourceFile 解析过的 San 源文件 * @param ssrOnly 只在服务端渲染,客户端无法反解,可用来减少渲染标记 * @param bareFunction 只输出一个 function,不输出 CMD 包装 * @param bareFunctionBody 只输出 function body */ compileToSource(sourceFile: SanSourceFile, options?: CompileOptions): string; /** * 编译到 JS Render 函数 * * 注意:只支持 DynamicSanSourceFile,san-ssr 只对组件代码进行静态的编译, * 不会托管并执行组件代码,因此你需要把执行得到的入口组件传给 san-ssr。 * * @param sourceFile 解析过的 San 源文件 * @param options 渲染参数 */ compileToRenderer(sourceFile: DynamicSanSourceFile, options?: RenderOptions): Renderer; emitHelpers(): string; /** * 解决 render 函数的依赖(即 helpers 和 resolver) */ private createRenderer; private doCompileToSource; private ensureHelpers; private compileTSComponentToSource; private compileJSComponentToSource; private compileComponentClassToSource; private optimize; }