前端框架虚拟DOM的产生

直接说结论:为了找出与命令式(原生实现步骤)所执行代码的最小差异化,从而优化代码性能。

命令式:

可以理解为面向过程编程,需要写好每个实现步骤

javascript 复制代码
<div id="app"></div>
const div = document.querySelector('#app') // 获取 div
div.innerText = 'hello world' // 设置文本内容

如果需要修改文字内容为"你好"

javascript 复制代码
div.innerText = '你好' // 设置文本内容

声明式:

可以理解为面向结果编程,只需要关注结果,至于过程由框架实现。这里以vue3举例

javascript 复制代码
<div id="app"></div>
<script setup>
  const text = ref('hello world')
</script>

如果需要修改文字内容为"你好"。则需要vue3进行新旧对比,找出不同后执行innerText的更改

javascript 复制代码
text.value = '你好'

命令式和声明式两者性能差异:

命令式代码的更新性能消耗 = 1

声明式代码的更新性能消耗 = 1+X

其中X为找出新旧不同时两者(命令式和声明式)差异的性能消耗,虚拟DOM因此产生,它的作用就是为了辅助找出X,从而实现最接近原生的性能。

到后来虚拟DOM还出现了跨平台的优势。

相关推荐
一 乐3 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
C_心欲无痕3 小时前
ts - tsconfig.json配置讲解
linux·前端·ubuntu·typescript·json
清沫3 小时前
Claude Skills:Agent 能力扩展的新范式
前端·ai编程
yinuo4 小时前
前端跨页面通信终极指南:方案拆解、对比分析
前端
yinuo4 小时前
前端跨页面通讯终极指南⑨:IndexedDB 用法全解析
前端
xkxnq5 小时前
第二阶段:Vue 组件化开发(第 16天)
前端·javascript·vue.js
烛阴5 小时前
拒绝配置地狱!5 分钟搭建 Three.js + Parcel 完美开发环境
前端·webgl·three.js
Van_Moonlight5 小时前
RN for OpenHarmony 实战 TodoList 项目:空状态占位图
javascript·开源·harmonyos
xkxnq5 小时前
第一阶段:Vue 基础入门(第 15天)
前端·javascript·vue.js
anyup7 小时前
2026第一站:分享我在高德大赛现场学到的技术、产品与心得
前端·架构·harmonyos