一、前言
页面更新时,是否一定需要重新构建虚拟节点?
二、什么是 Vue Vapor Mode?
Template ↓Compiler ↓Virtual DOM ↓Diff算法 ↓真实DOM更新
Template ↓Compiler ↓直接生成DOM操作代码 ↓精准更新页面
state.name = 'Vue'
数据变化↓触发响应式↓生成新的VNode↓Diff旧VNode↓Patch DOM
数据变化↓响应式触发↓直接修改对应DOM节点
三、为什么 Vue 要探索 Vapor Mode?
1. Virtual DOM 曾经是优势
document.querySelector()element.innerHTML=''
<template><h1>{{title}}</h1></template>
2. 但是现代浏览器已经越来越强
组件数据变化↓创建VNode对象↓对象比较↓执行patch↓更新DOM
四、Vapor Mode 的核心技术
1. 编译时优化
把优化提前到编译阶段。
<div> {{message}}</div>element.textContent = message
createVNode()patch()update()
2. 更细粒度响应式更新
变量变化↓绑定节点↓局部更新
总结
“运行时优化”
“编译阶段决定性能”