1、Vue 的理解
【点题收敛】
Vue 是一套渐进式 JavaScript 应用框架,专注于构建用户界面。它的核心思想是数组驱动和组件化。通过将页面拆分成独立的组件,可以更好地管理代码,提高代码的复用性和可维护性。另外,Vue还提供了 Vuex、Vue Router、Axios 等官方插件,可以进一步扩展 Vue 的功能。
渐进式:逐级递增的意思。声明式渲染 => 组件系统 => 客户端路由 => 大规模状态管理 => 构建工具,需要什么功能就在基础上增加(后面是Vue的生态)。
特点:
① 遵循MVVM模式
数据绑定采用的是 MVVM 模式,但是 Vue 不是一个完整的 MVVM 模式,只是借鉴了这个思想,MVVM 是对 MVC 的简化和改进。
② 声明式编码,可以无需操作DOM,提高开发效率
主要核心是声明式渲染,声明式渲染的特点是简单方便,只需要关注结果,不需要关注过程。
③ 使用虚拟 DOM 和 Diff 算法,尽量复用 DOM 节点
Vue采用了模板的语法,最后编译成了虚拟DOM。虚拟DOM在Vue中的主要有两大作用:实现了跨平台和减少了操作真实DOM的频率,作为缓存使用。里面还有 Diff 算法,通过比较差异最终去更新差异的部分。
Vue 的渲染核心就是调用渲染 render 方法,将虚拟 DOM 渲染成真实 DOM,缺点就是虚拟 DOM 编写麻烦。
④ 编码简洁,体积小,运行效率高,适合移动、PC端开发
⑤ 本身只关注 UI,可以引入其他第三方库开发项目
⑥ 采用组件化模式,提高代码的复用率且更易于维护代码
同时。Vue还区分了编译时和运行时,Vue支持组件化,组件化存在组件级更新。
2、Vue核心特性
【追问拓展】
1、响应式、数据驱动
Vue 的响应式数据绑定机制是 Vue 最核心的特性之一,借鉴 MVVM 数据驱动思想实现数据的双向绑定。通过对数据进行劫持和监听,可以实现数据的双向绑定,即数据变化会自动更新视图,同时视图的变化也会反映到数据上。
这种机制使得 Vue 的数据流非常清晰和可预测,同时也减少了开发的工作量。
通过虚拟 DOM 让我们可以用数据来操作 DOM,而不必去操作真实的 DOM,提升了性能。且让开发者有更多的时间去思考业务逻辑。
Vue1.0的时候并没有出现虚拟DOM,而是通过节点一对一个watch的方式来实现DOM的更新和同步。
好处是效率更高,缺点是当数据比较多的时候就会有大量DOM的操作,违背了数据驱动的初心。
Vue2.0引入了虚拟DOM
MVVM中的VM就相当于Vue2.x中的data ,将数据临时保存在data中,这是前后端分离的根本原因。
2、组件化
组件化:把一个单页应用中的各个模块拆分到一个个组件当中,或者把一些公共的部分抽离出来做成一个可复用的组件。
所以组件化带来的好处就是,提高了开发效率,方便重复使用,使项目的可维护性更强,且降低更新范围,只需要重新渲染变化的组件。
3、指令系统
指令系统:是带有v- 前缀的特殊属性。当表达式的值改变时,将其产生的影响,响应式地作用于DOM
常用的指令:
条件渲染指令
v-if
列表渲染指令v-for
属性绑定指令
v-bind
事件绑定指令v-on
双向数据绑定指令
v-model
缺点:
基于对象配置文件的写法,也就是options写法,开发时不利于对一个属性的查找。
另外一些缺点,在小项目中感觉不太出什么,Vuex 的魔法字符串,对 TS 的支持。
兼容性上存在一些问题。不利于seo;
导航不可用,如果一定要导航需要自行实现前进、后退。(由于是单页面不能用浏览器的前进后退功能,所以需要自己建立堆栈管理);初次加载时耗时多
3、Vue跟传统开发的区别
① Vue 所有界面的变动,都是根据数据双向绑定出来的,基本不操作 DOM,都只去操作数据;而 Jquery 需要操作大量的 DOM,性能很不友好;
② 传统开发缺乏组织性,前端三剑客 HTML+CSS+JS 纵横交错,可维护性和拓展性比较差,jQuery 的出现只是封装了 DOM 的操作和解决一些兼容性问题,并没有改变复杂的局面;
③ 传统开发中类库缺乏业务分层,在某方面增加了复杂度;
4、总结
总之,我认为 Vue 是一个优秀的 JavaScript 框架,它简单易用、功能强大、扩展性好,并且有着极佳的性能表现。对于前端开发人员来说,Vue 是一个值得深入学习和使用的框架。