Skip to content

Latest commit

 

History

History
37 lines (26 loc) · 888 Bytes

36. 编译模块概述.md

File metadata and controls

37 lines (26 loc) · 888 Bytes

编译模块概述

在本实现的编译模块,我们将自己编写的编译模块来解析并输出未 render 函数

let template = `<template>Consumer: xxx</template>`
render() {
    return h('div', {}, `Consumer: xxx`)
}

大概的编译流程是这样的:

0parser-01

  • 用户编写的 template 字符串
  • 通过 parser 转换为 AST 抽象语法树
  • 将 AST 传递到 transform 模块,对 AST 进行处理
  • 将处理好的 AST 传递到 codegen 最终输出 render

一个例子

一个 template 会涉及到三种类型:

<div>
    hi, {{msg}}
</div>
  • elementdiv
  • texthi
  • 插值{{msg}}