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

相关推荐
*且听风吟9 小时前
html 实现鼠标滑动点亮横轴
前端·javascript·html
iCoding9110 小时前
前端分页 vs 后端分页:技术选型
前端·后端·系统架构
mingtianyihou3310 小时前
使用 Service Worker 限制请求并发数
前端
张可爱11 小时前
20251017-Vue2八股文整理(上篇)
前端
FanetheDivine11 小时前
ts中如何描述一个复杂函数的类型
前端·typescript
lightgis11 小时前
chrome中的axure插件提示无法不受支持
前端·chrome
速易达网络11 小时前
Vue3 原生移动应用开发来了
前端·javascript·css
渣哥11 小时前
别再乱用了!Spring AOP 与 AspectJ 的区别比你想的复杂
javascript·后端·面试
GISer_Jing11 小时前
LLM对话框项目技术栈&重难点总结
前端·ai·node.js
患得患失94911 小时前
【Turborepo】【Next】 Turborepo + Next.js 前后端精简搭建笔记(带官网)
开发语言·javascript·笔记