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

相关推荐
忧郁的蛋~13 分钟前
.NET异步编程中内存泄漏的终极解决方案
开发语言·前端·javascript·.net
水月wwww23 分钟前
vue学习之组件与标签
前端·javascript·vue.js·学习·vue
合作小小程序员小小店36 分钟前
web网页开发,在线%商城,电商,商品购买%系统demo,基于vscode,apache,html,css,jquery,php,mysql数据库
开发语言·前端·数据库·mysql·html·php·电商
顾安r37 分钟前
11.8 脚本网页 塔防游戏
服务器·前端·javascript·游戏·html
草莓熊Lotso44 分钟前
C++ 方向 Web 自动化测试实战:以博客系统为例,从用例到报告全流程解析
前端·网络·c++·人工智能·后端·python·功能测试
fruge1 小时前
Canvas/SVG 冷门用法:实现动态背景与简易数据可视化
前端·信息可视化
一 乐1 小时前
旅游|内蒙古景点旅游|基于Springboot+Vue的内蒙古景点旅游管理系统设计与实现(源码+数据库+文档)
开发语言·前端·数据库·vue.js·spring boot·后端·旅游
驯狼小羊羔1 小时前
学习随笔-require和import
前端·学习
excel1 小时前
🚀 从 GPT-5 流式输出看现代前端的流式请求机制(Koa 实现版)
前端
凸头1 小时前
Spring Boot接收前端参数的注解总结
前端·spring boot·后端