前端框架虚拟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还出现了跨平台的优势。

相关推荐
DanCheOo7 分钟前
Prompt 工程化管理:从散落在代码里到版本化、可测试、可回滚
前端·ai编程
涛涛ing9 分钟前
Vue 3.5 下一站:cached 提案,重新定义响应式缓存
前端
胖子不胖11 分钟前
svg之viewBox
前端
隔壁老王111111 分钟前
浅谈JavaScript内存管理
javascript
吹牛不交税14 分钟前
tree-transfer-vue3 前端插件安装问题解决(--legacy-peer-deps)(其他插件可考虑)适用
前端·javascript·vue.js
ricardo197315 分钟前
Chrome DevTools + Lighthouse + Performance API:前端性能调优三件套实操指南
前端
Appoint_x18 分钟前
设计稿自己会说话:我用 Claude 给 Figma 做了个 AI 上下文插件
前端·javascript
豹哥学前端20 分钟前
浏览器console里的双中括号 `[[ ]]`
前端·javascript·ecmascript 6
菜泡泡@20 分钟前
npm 安装pnpm之后运行pnpm -v查询报错
前端·npm·node.js