Vue通过虚拟DOM技术减少DOM操作。什么是虚拟DOM?使用js对象模拟DOM,在操作过程中不会直接操作DOM,等待虚拟DOM操作完成,仅仅比较开始和结束状态虚拟DOM有哪些变换,最终根据结束状态虚拟DOM去操作DOM。至于虚拟DOM怎么比较则是采用diff算法,具体算法偶也不会。不过diff算法里有一个很好的措施来减少DOM操作。
(一)、优先处理特殊场景
(1)、头部的同类型节点、尾部的同类型节点
这类节点更新前后位置没有发生变化,所以不用移动它们对应的DOM
(2)、头尾/尾头的同类型节点
这类节点位置很明确,不需要再花心思查找,直接移动DOM就好
(二)、“原地复用”“原地复用”是指Vue会尽可能复用DOM,尽可能不发生DOM的移动。Vue在判断更新前后指针是否指向同一个节点,其实不要求它们真实引用同一个DOM节点,实际上它仅判断指向的是否是同类节点,如果是同类节点,那么Vue会直接复用DOM,例如通过对换文本内容的方式,这样的好处是不需要移动DOM。
2.Vue支持双向数据绑定
数据绑定有单向数据绑定和双向数据绑定。
什么是单向数据绑定?单向数据绑定即一方面只受另一方面影响,却无法影响另一方面。前端常说的单向数据绑定一般都指数据影响页面,而页面不影响数据。
什么是双向数据绑定?双向的意思即两个方面相互影响,前端来说,即数据影响页面,页面同时影响数据。例如,在 MVVM 框架中,View(视图) 和 Model(数据) 是不可以直接通讯的,在它们之间存在着 ViewModel 这个中间介充当着观察者的角色。当用户操作 View(视图),ViewModel 感知到变化,然后通知 Model 发生相应改变;反之当 Model(数据) 发生改变,ViewModel 也能感知到变化,使 View 作出相应更新。
举个栗子v-model双向绑定以上代码将input的value和页面显示双向绑定在一起。其实v-model只是语法糖,双向绑定其实就等于单向绑定+UI时间监听,只不过Vue将过程采用黑箱封装起来了。
那双向绑定有什么好处?好处就是方便,数据自动更新。而缺点就是无法得知是哪里更改了数据。
3.Vue支持组件化
组件化的概念Web 中的组件其实就是页面组成的一部分,好比是电脑中的每一个元件(如硬盘、键盘、鼠标),它是一个具有独立的逻辑和功能或界面,同时又能根据规定的接口规则进行相互融合,变成一个完整的应用,页面就是有一个个类似这样的部分组成,比如导航、列表、弹窗、下拉菜单等。页面只不过是这些组件的容器,组件自由组合形成功能完善的界面,当不需要某个组件,或者想要替换某个组件时,可以随时进行替换和删除,而不影响整个应用的运行。
组件化的特性高内聚性,组建功能必须是完整的,如偶要实现下拉菜单功能,那在下拉菜单这个组件中,就把下拉菜单所需要的所有功能全部实现。
低耦合度,通俗点说,代码独立不会和项目中的其他代码发生冲突。在实际工程中,大家经常会涉及到团队协作,传统按照业务线去编写代码的方式,就很容易相互冲突,所以运用组件化方式就可大大避免这种冲突的存在、
每一个组件都有子集清晰的职责,完整的功能,较低的耦合便于单元测试和重复利用。
组件化的优点1.提高开发效率 2.方便重复使用 3.简化调试步骤 4.提升整个项目的可维护性 5.便于协同开发