1、mvvm
首先我们并不关心DOM的结构,而是关心数据如何存储。
MVVM的核心是数据驱动即ViewModel,ViewModel是View和Model的关系映射。MVVM本质就是基于操作数据来操作视图进而操作DOM,借助于MVVM无需直接操作DOM,开发者只需编写ViewModel中有业务,使得View完全实现自动化
关注Model的变化,让MVVM框架去自动更新DOM的状态,从而把开发者从操作DOM的繁琐步骤中解脱出来
SPA 单页面
vue生命周期
v-if/v-show
vue的单向数据流
vue 组件通信
SSR
vue路由
vue项目优化
虚拟dom
在网页中浏览器资源开销最大便是DOM节点了,DOM很慢并且非常庞大,网页性能问题大多数都是有JavaScript修改DOM所引起的。我们使用Javascript来操纵DOM,操作效率往往很低,由于DOM被表示为树结构,每次DOM中的某些内容都会发生变化,因此对DOM的更改非常快,但更改后的元素,并且它的子项必须经过Reflow / Layout阶段,然后浏览器必须重新绘制更改因此,回流/重绘的次数越多,您的应用程序就越卡顿。
但是,Javascript运行速度很快,虚拟DOM是放在JS 和 HTML中间的一个层。它可以通过新旧DOM的对比,来获取对比之后的差异对象,然后有针对性的把差异部分真正地渲染到页面上,从而减少实际DOM操作,最终达到性能优化的目的。
实现原理
用JavaScript模拟DOM树,并渲染这个DOM树
比较新老DOM树,得到比较的差异对象
diff 算法 — 比较两棵虚拟 DOM 树的差异
pach 算法 — 将两个虚拟 DOM 对象的差异应用到真正的 DOM 树。
最后把差异对象应用到渲染的DOM树。