1.权衡的艺术

1.命令式和声明式

视图层框架通常分为命令式和声明式。它们各有优缺点。

命令式:是关注计算机的执行步骤,告诉计算机一步一步怎么做然后计算机再一步步做

声明式:是告诉计算机做什么,但不告诉计算机怎么

vue.js帮我们封装了过程。因此,我们能够猜到Vue.js的内部实现一定是命令式。而暴露给用户的却更加声明式

2.性能与可维护性的权衡

命令式和声明式各有优缺点,在框架设计方面,则提现在性能与可维护性之间的权衡。

声明式代码的性能不优于命令式代码的性能。

命令式代码可以做到极致的性能优化

声明式代码的可维护性更强。

在采用命令式代码开发的时候,我们需要维护目标的整个过程,包括要手动完成DOM元素的创建、更行、删除等工作。

而声明式代码展示的就是我们要的结果,看上去更加直观,至于做事的过程,并不需要我们惯性,Vue.js都帮我们封装好了。

3.虚拟DOM的性能到底如何

声明式代码的更新性能消耗=找出差异的性能消耗+直接修改的性能消耗,因此,如果我们能够最小化找出差异的性能优化消耗,就可以让声明式的性能无限接近命令式代码的性能,而所谓的虚拟DOM,就是为了最小化找出差异这一步的性能消耗而出现的。

什么是虚拟DOM

虚拟DOM的概念是通过状态生成一个虚拟节点树,然后使用虚拟节点树进行渲染。在渲染之前,会使用新生成的虚拟节点和上一次生成的虚拟节点进行对比,只渲染不同的部分

Vue中的虚拟DOM

vue中状态变化时,只能通知到组件,组件内部的变化需要通过虚拟DOM去进行比对与渲染

在vue中,我们使用模板来描述状态与DOM之间的映射关系。vue通过编译将模板转换成渲染函数,执行渲染函数就可以得到一个虚拟节点树,使用虚拟节点数就可以渲染页面

虚拟DOM在vue中主要提供与真实节点对应的虚拟节点vnode,然后需要将vnode和oldVnode进行比对,然后更新视图,对比两个虚拟节点的算法是patch算法

4.运行时和编译时

运行时:所谓运行时就是代码跑起来了.被装载到内存中去了

编译时:就是编译器帮你把源代码翻译成机器能识别的代码.

5.总结

声明式的更新性能消耗= 找出差异的性能消耗+直接修改的性能消耗

虚拟DOM的意义就在于使找出差异的性能消耗最小化

Vue.js设计与实现相关推荐

  1. Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节

    霍春阳(Hcy),Vue.js 官方团队成员.专注于 Web 研发领域,是 Vue.js 3 的核心贡献者之一,Vue.js 文档生成工具 Vuese 的作者,技术社区活跃者,曾撰写大量颇受好评的技术 ...

  2. Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节【文末送书】

    霍春阳(Hcy),Vue.js 官方团队成员.专注于 Web 研发领域,是 Vue.js 3 的核心贡献者之一,Vue.js 文档生成工具 Vuese 的作者,技术社区活跃者,曾撰写大量颇受好评的技术 ...

  3. 推荐2022前端必看的新书 《Vue.js设计与实现》

    大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...

  4. 【阅读】1235- 推荐2022前端必看的新书 《Vue.js设计与实现》

    本文浮夸班标题 <废物!Vue3源码都不会,还敢去头条面试前端?> 今天推荐一本我认为2022年前端进阶需要看的一本书,来自Vue官方团队成员霍春阳的新书<Vue.js设计与实现&g ...

  5. Vue.js设计与实现(v3)

    git地址 1. 响应系统 1.1 响应式数据与副作用函数 副作用函数是指会产生副作用的函数, 如下面的代码所示: function effect () {document.body.innerTex ...

  6. vue理由设置_在你的下一个Web应用中使用Vue.js的三个理由

    Vue.js是那么地易上手,它在提供了大量开箱即用的功能的同时也提供了良好的性能.请继续阅读以下事例及代码片段以便更加了解Vue.js. 选择一个JavaScript框架真是太难了--因为有太多的框架 ...

  7. Vue.js实战之系统学习第一节

    为什么叫系统学习呢?因为我以前接触过Vue.js,但是没学过它的原理,只是简单的使用了,使用的时候就觉得很好用,没有其他的什么感觉,但当我进入职场后,学习了很多的前端技术后,才发现这个技术的友好,被它 ...

  8. Vuex 数据流管理及Vue.js 服务端渲染(SSR)

    Vuex 数据流管理及Vue.js 服务端渲染(SSR)项目见:https://github.com/smallSix6/fed-e-task-liuhuijun/tree/master/fed-e- ...

  9. 《前端框架Vue.js的解读利器》

    目前个人所在的项目组团队是平台团队,主要是负责一些前端界面的配置和开发工作,所以和前端打交道还是有一些时间的. 前一些时间看到平台的同事在微信群里推荐图灵的<Vue.js技术内幕>,这一下 ...

最新文章

  1. Google Ajax Search 参考
  2. Keycloak Spring Security适配器的常用配置
  3. bootstrap 栅栏系统
  4. How run Powershell ISE on WIndows Server2008
  5. 信息系统项目管理师-项目沟通管理与干系人管理核心知识点思维脑图
  6. javascript --执行上下文,作用域
  7. C# 去重处理字符大小写
  8. 中国最神秘的一所大学,它只存在过8年,却成了永远的第一
  9. 2020-11-08
  10. swift -- Tuple 元组 Dictionary
  11. linux的Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理介绍
  12. access怎么查询工龄_电子商务专业怎么样?学什么?前景好吗?
  13. WINDOWS.H already included.MFC apps must not #include windows.h
  14. 基于Python的文本分析
  15. java网络蜘蛛_基于java网络蜘蛛程序
  16. android铃声格式转换,m4r格式转换器——iphone铃声制作工具(mp3转换m4r)
  17. 软考/软件设计师资料真题/软件设计师教程
  18. SaaS-HRM(2)数据库设计与前端框架(企业管理前后台)
  19. 工行网银网上支付 提示选择证书,但下拉框是空白,无法选择导致不能支付 解决办法
  20. Codeforces Round #521 (Div. 3) E. Thematic Contests(思维)

热门文章

  1. 【游戏动画】游戏动画总结
  2. Python数据科学包(六)-----数据可视化和例子
  3. YY/T 9706.106-2021医用电气设备 第1-6部分:基本安全和基本性能的通用要求 并列标准:可用性
  4. 问题 I: Stones
  5. 如何查找STM32开发资料
  6. Intel RealSense L515 motion的计算与可视化
  7. 传递函数极点和零点的几何表示
  8. Parallels Desktop 17已发布Apple M1大幅提速
  9. 学计算机的人掉头发吗,高校里容易“掉头发”的3个专业,为了防秃头,大家慎重报考!...
  10. 一个基于mobapi的手机号码归属地查询的app