# day 10 **Repository Path**: YJQ1027/day-10 ## Basic Information - **Project Name**: day 10 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-11-14 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 虚拟dom,diff算法 **虚拟dom** ​ 根据模板生成的一个js对象,用js对象的形式,来模拟页面上的dom嵌套关系 ​ 目的:实现页面元素的高效更新 **diff算法** ​ js对象表示dom树结构,用这个对象建立一个真的dom树,插入到文档中 ​ 状态更新,重新构造一颗新树,两棵树比较差异 ​ 把差异应用到真的dom树上,更新视图 ## Vue 中数组中的某个对象的属性发生变化,视图不更新如何解决 **问题原因**:因为 vue 的检查机制在进行视图更新时无法监测数组中的某个对象的属性值的变化。 **方案一**: ​ 利用 **this.set(this.obj,key,val)** ​ 例:this.set(this.obj,‘k1’,‘v1’) **方案二**: ​ 就利用 **Object.assign({},this.obj)**创建新对象,如果是数组就 **Object.assign([],this.obj)** ​ 如果是对象就 **Object.assign({},this.obj)** ## vue3.0 与 vue2.0 的区别 1、**性能提升** 一句话简介:更小巧,更快速;支持摇树优化;支持 Fragments 和跨组件渲染;支持自定义渲染器。 摇树优化(打包时把没用的项目剔除掉) 2、**API 变动** 一句话介绍:除渲染函数 API 和 scoped-slot 语法之外,其余均保持不变或者将通过另外构建一个兼容包 来兼容 2.x。 模板语法的 99% 将保持不变。除了 scoped slot 语法可能会有一些微调之外变动最大的部分将是渲染函数 (render) 中的虚拟 DOM 的格式。 3、**重写虚拟 DOM** (Virtual DOM Rewrite) 随着虚拟 DOM 重写,减少 运行时(runtime)开销。重写将包括更有效的代码来创建虚拟节点。