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

相关推荐
Onion_L1 分钟前
Rust CLI 发布 NPM 的开发记录🫕
前端·rust·npm
右子1 分钟前
Claude Code:介绍与使用教程
前端·人工智能·后端
bigyoung2 分钟前
如何使用 `react-i18next` 来国际化一段包含 React 组件的文本
前端·javascript
沐土Arvin5 分钟前
前端代码格式化工具HTML离线版
前端
舟舟好梦7 分钟前
SZU大学物理实验报告|光敏电阻
前端
林太白19 分钟前
NestJS-角色模块
前端·javascript·nestjs
种豆走天下22 分钟前
VUE进阶案例
前端·javascript·vue.js
陈随易27 分钟前
盘点微信开发者工具V1和V2的区别
前端·后端·程序员
zengyuhan50329 分钟前
使用Rust 串口通信 及 MTP文件获取
前端·rust
小宋搬砖第一名31 分钟前
阿里云部署小白教程
前端