首页 > 其他分享 >第一章、权衡的艺术

第一章、权衡的艺术

时间:2022-08-28 11:23:48浏览次数:47  
标签:艺术 DOM 权衡 可维护性 第一章 编译 虚拟 innerHtml 性能

小记: 本章 主要了解命令式、声明式、性能与可维护性的权衡、虚拟Dom的性能、运行时和编译时。Vue就是通过权衡这几种方式的优缺点进行框架设计

  1. 命令式、声明式
    1.  对比
      框架对比 命令式 声明式
      特点 只关注过程 只关注结果
      优点 性能最高 心智负担小,维护性高
      优缺点   心智负担大、维护性差 性能较高
      代码对比
      给div实现点击事件
      const div = document.querySelector('#app')
      div.addEventListener('click', () => { alert('绑定OK') })
      <div @click="()=>alert('ok')">点我</div>
  2. 性能与可维护性进行权衡

      结论 :声明式代码的性能不优于命令式代码的性能

      a.  在命令式代码中我们修改某个元素或者内容,直接操作即可 : div.textContent = ' hello'
      b.  在Vue中,修改某个元素的属性或内容,我们得先找到前后的差异,并更新差异  (这个地方可了解diff)
      上述性能对比:
        记: A = 直接修改性能得消耗,  B = 寻找差异得性能消耗
      那么  a  = A    b = A+B
      上述验证符合我们得结论
    Vue为啥用声明式呢?
      主要原因就是声明式代码的可维护性强,所以在权衡可维护性和性能时,Vue要做的就是在保证可维护性得同时让代码的性能损失最小

   3. 虚拟DOM的性能到底如何
    1. 先了解一下 innerHtml 的性能
      innerHtml 在创建的过程中将一串模板字符串解析为Dom树
      虚拟DOM创建页面的过程分为两步
        创建JS对象==》真实DOM的描述

        递归遍历虚拟DOM并创建真实DOM

      在上述前提下,我们会觉得innerHtml性能会和虚拟DOM差不多
      当涉及大量元素修改的时候,innerHtml每次都得销毁所有DOM重新渲染,而虚拟DOM只需要查找不一样的进行渲染
      综上。innerHtml的性能是与数据量有关系的,而虚拟DOM与数据变化量有关

    2.innerHtml、 虚拟DOM、元素JS性能对比

innerHtml 模板 虚拟DOM 原生Js
心智负担中等 心智负担小 心智负担大
性能差  性能不错 性能高
可维护性差 可维护性强 可维护性差


 注: 涉及DOM层面的计算要比JS层面的计算性能要差的多

    4. 运行时、编译时

      结论    Vue3.js是一个运行时加编译时的框架, 在保证灵活的前提下,通过分析用户提供的内容尽可能提升性能

      1. 运行时: 

        每一个元素编译之后都是一个js对象  tag  children 
        我们直接创建这样的对象进行reder渲染  称为运行时框架

      2. 运行时+ 编译时

        我们创建html  在调用compiler编译  在用render渲染   
        消耗性能
      3. 编译时

        用户直接将html编译为命令式代码 直接操作dom  性能 非常高
        灵活性差

标签:艺术,DOM,权衡,可维护性,第一章,编译,虚拟,innerHtml,性能
From: https://www.cnblogs.com/rlwan/p/16632402.html

相关文章

  • STM32H7_Rtthread_LVGL开发第一章<STM32H7工程创建>
    工具:MDK5-STM32CubeMX-Rtthread源码-LVGL源代码-ENV工具 步骤1:用CubeMX生成一个最小基础工程外部晶振为25Mhz,系统时钟配置为最高  设置调试口设置系......
  • 第一章计算机系统概述
    1.1操作系统的概念(定义)功能和目标1.1.1操作系统的概念操作系统(OperatingSystem,OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源......
  • 第一章 模式识别的相关概念学习笔记
    1  相关概念1.1 什么是模式?可以被区分是否相似,存在于时间和空间中可观察的物体之中的信息。(模式不是事务本体,是从事物中获取的信息)1.2 模式的直观特性可观察性......
  • 阅读的艺术:主动阅读 邛亦简
    相信无数人从高中毕业之后就患上了"阅读昏睡症"。对于稍微需要费脑的专业书籍,学术论文,目光一触及文字,脑袋里的思绪就开始打结,导致脑子跟不上眼睛的速度。脑袋里只知道每个......
  • 01第一章:Docker简介
    一、Docker是什么1、问题:为什么会有docker出现?假定您在开发一个商城项目,您使用的是一台笔记本电脑而且您的开发环境具有特定的配置。其他开发人员身处的环境配置也各......
  • Wireshark网络分析的艺术 pdf
    高清扫描版下载链接:https://pan.baidu.com/s/1cAWKzic9t9nHu7HzFW0xnA点击这里获取提取码Wireshark是当前流行的网络包分析工具。它上手简单,无需培训就可门。很多棘手的网......
  • Python小游戏——外星人入侵(保姆级教程)第一章 09重构check_events()
    系列文章目录第一章:武装飞船09重构check_events()一、重构1.重构原因随着游戏的开发,方法_check_events()将越来越长。因此将其部分代码放在两个方法中,其中一个处理KEY......
  • Python小游戏——外星人入侵(保姆级教程)第一章 07调整飞船速度 08限制飞船活动范围
    系列文章目录第一章:武装飞船07调整飞船速度08限制飞船活动范围一、代码及演示1.修改settings修改文件:settings.py点击查看代码#渗透小红帽python的学习之路#外......
  • Python小游戏——外星人入侵(保姆级教程)第一章 06让飞船移动
    系列文章目录第一章:武装飞船06:让飞船移动一、驾驶飞船下面来让玩家能够左右移动飞船。我们将编写代码,在用户按左或右箭头键时做出响应。我们将首先专注于向右移动,再使......
  • 线程池:第一章:线程池的底层原理
    线程池的底层原理线程池相当于银行网点,常驻核心数相当于今日当值窗口,线程池能够同时执行的最大线程数相当于银行所有的窗口,任务队列相当于银行的候客区,当今日当值窗口......