AST 是 Joker 中 template 的结构化数据,它最终会结合组件实例来渲染出虚拟 Node,并将虚拟 Node 渲染到对应平台中。
它的来源有两种:
- 通过 单文件组件(SFC) 中的
<template>
标签来编写,编写规则请查看模板,并通过CLI转换为AST.Node[]
。 - 通过 Core 中提供的
createText
,createCommand
等方法使用js语法输出 AST.Node[],并设置到组件 template 属性中。template 属性可查看组件属性中的 template 属性介绍。
两种形式都可以输出 AST.Node[]
,AST.Node 是 AST 的基础类模型,按照功能划分为:Text
,Element
,Comment
,Component
四种类型。其中 AST.Node 作为基础模型类,它本身具有以下属性:
属性名 | 说明 | 类型 |
---|---|---|
childrens | 子集 | AST.Node[] |
type | 类型 | NodeType |
可通过判断 type 值来确定当前 AST.Node 的类型:
//该枚举可通过AST.NodeType获得
export enum NodeType {
TEXT, //文本
COMMENT, //注释
ELEMENT, //标签
COMMAND, //指令
COMPONENT //动态组件
}
//例如:
item.type === AST.NodeType.COMMENT;