Vue.js设计与实现
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设计与实现相关推荐
- Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节
霍春阳(Hcy),Vue.js 官方团队成员.专注于 Web 研发领域,是 Vue.js 3 的核心贡献者之一,Vue.js 文档生成工具 Vuese 的作者,技术社区活跃者,曾撰写大量颇受好评的技术 ...
- Vue.js 官方团队成员霍春阳新作,深入解析 Vue.js 设计细节【文末送书】
霍春阳(Hcy),Vue.js 官方团队成员.专注于 Web 研发领域,是 Vue.js 3 的核心贡献者之一,Vue.js 文档生成工具 Vuese 的作者,技术社区活跃者,曾撰写大量颇受好评的技术 ...
- 推荐2022前端必看的新书 《Vue.js设计与实现》
大家好,我是若川.持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...
- 【阅读】1235- 推荐2022前端必看的新书 《Vue.js设计与实现》
本文浮夸班标题 <废物!Vue3源码都不会,还敢去头条面试前端?> 今天推荐一本我认为2022年前端进阶需要看的一本书,来自Vue官方团队成员霍春阳的新书<Vue.js设计与实现&g ...
- Vue.js设计与实现(v3)
git地址 1. 响应系统 1.1 响应式数据与副作用函数 副作用函数是指会产生副作用的函数, 如下面的代码所示: function effect () {document.body.innerTex ...
- vue理由设置_在你的下一个Web应用中使用Vue.js的三个理由
Vue.js是那么地易上手,它在提供了大量开箱即用的功能的同时也提供了良好的性能.请继续阅读以下事例及代码片段以便更加了解Vue.js. 选择一个JavaScript框架真是太难了--因为有太多的框架 ...
- Vue.js实战之系统学习第一节
为什么叫系统学习呢?因为我以前接触过Vue.js,但是没学过它的原理,只是简单的使用了,使用的时候就觉得很好用,没有其他的什么感觉,但当我进入职场后,学习了很多的前端技术后,才发现这个技术的友好,被它 ...
- Vuex 数据流管理及Vue.js 服务端渲染(SSR)
Vuex 数据流管理及Vue.js 服务端渲染(SSR)项目见:https://github.com/smallSix6/fed-e-task-liuhuijun/tree/master/fed-e- ...
- 《前端框架Vue.js的解读利器》
目前个人所在的项目组团队是平台团队,主要是负责一些前端界面的配置和开发工作,所以和前端打交道还是有一些时间的. 前一些时间看到平台的同事在微信群里推荐图灵的<Vue.js技术内幕>,这一下 ...
最新文章
- Google Ajax Search 参考
- Keycloak Spring Security适配器的常用配置
- bootstrap 栅栏系统
- How run Powershell ISE on WIndows Server2008
- 信息系统项目管理师-项目沟通管理与干系人管理核心知识点思维脑图
- javascript --执行上下文,作用域
- C# 去重处理字符大小写
- 中国最神秘的一所大学,它只存在过8年,却成了永远的第一
- 2020-11-08
- swift -- Tuple 元组 Dictionary
- linux的Nginx防盗链、Nginx访问控制、Nginx解析php相关配置、Nginx代理介绍
- access怎么查询工龄_电子商务专业怎么样?学什么?前景好吗?
- WINDOWS.H already included.MFC apps must not #include windows.h
- 基于Python的文本分析
- java网络蜘蛛_基于java网络蜘蛛程序
- android铃声格式转换,m4r格式转换器——iphone铃声制作工具(mp3转换m4r)
- 软考/软件设计师资料真题/软件设计师教程
- SaaS-HRM(2)数据库设计与前端框架(企业管理前后台)
- 工行网银网上支付 提示选择证书,但下拉框是空白,无法选择导致不能支付 解决办法
- Codeforces Round #521 (Div. 3) E. Thematic Contests(思维)
热门文章
- 【游戏动画】游戏动画总结
- Python数据科学包(六)-----数据可视化和例子
- YY/T 9706.106-2021医用电气设备 第1-6部分:基本安全和基本性能的通用要求 并列标准:可用性
- 问题 I: Stones
- 如何查找STM32开发资料
- Intel RealSense L515 motion的计算与可视化
- 传递函数极点和零点的几何表示
- Parallels Desktop 17已发布Apple M1大幅提速
- 学计算机的人掉头发吗,高校里容易“掉头发”的3个专业,为了防秃头,大家慎重报考!...
- 一个基于mobapi的手机号码归属地查询的app