框架类型(运行时,编译时,运行+编译)
# 运行时
用户写一个树形结构的对象,框架将用户的结构通过 render
函数插入到页面中
const obj = {
tag: "div",
children: [{ tag: "span", childern: "hello" }],
};
function Render(obj, root) {
const el = document.createElement(obj.tag);
if (typeof obj.children === "string") {
const text = document.createTextNode(obj.children);
el.appendChild(text);
} else if (obj.children) {
obj.children.forEach((child) => Render(child));
}
root.appendChild(el);
}
这样,我们就能够将用户的对象转换成渲染内容
# 运行时+编译时
这类框架可以将 html
标签转换成 VNode
,再对其进行操作( diff
之类)然后编译成需要渲染的内容。
比如 vue
- 先将 html 标签通过
Compiler
转换成树形结构对象, - 然后再用
Render
函数转换为渲染内容
# 纯编译时
这类框架就是直接将 html 标签转换为渲染内容
-先将 html
标签通过 Compiler
转换成 js 操作 DOM
的语句