Vue相关
1.Vue 响应式原理
Vue 的响应式原理主要通过以下几个步骤实现:
- 数据劫持:Vue 使用
Object.defineProperty()
方法对数据对象的属性进行劫持,当数据被访问或修改时,可以触发相应的操作。 - 依赖收集:在读取数据时,Vue 会收集依赖于该数据的 Watcher(观察者)。Watcher 可以是组件的渲染函数、计算属性函数等。
- 数据变化通知:当数据被修改时,Vue 会通知所有依赖于该数据的 Watcher,触发它们的更新操作。
- 视图更新:Watcher 在接收到数据变化通知后,会执行相应的更新操作,从而更新视图。
通过这种方式,Vue 实现了数据和视图的自动同步,当数据变化时,视图会自动更新,无需手动操作 DOM。
2.Vue 数据双向绑定
Vue 的数据双向绑定是指在表单元素(如输入框、复选框等)和数据之间建立自动同步的机制。当表单元素的值发生变化时,数据也会相应地更新;反之,当数据发生变化时,表单元素的值也会更新。
Vue 实现数据双向绑定主要通过以下方式:
v-model
指令:在表单元素上使用v-model
指令,Vue 会自动将表单元素的值与数据进行绑定。当表单元素的值发生变化时,数据会自动更新;当数据发生变化时,表单元素的值也会更新。- 数据劫持和依赖收集:与 Vue 的响应式原理类似,Vue 会对数据进行劫持,并在读取数据时收集依赖于该数据的 Watcher。当表单元素的值发生变化时,会触发数据的 setter 方法,从而通知依赖于该数据的 Watcher 进行更新。
3.Vue 状态更新后如何渲染页面的
当 Vue 的状态更新时,Vue 会通过以下步骤渲染页面:
- 数据变化通知:当数据被修改时,Vue 会通知所有依赖于该数据的 Watcher。
- Watcher 更新:Watcher 在接收到数据变化通知后,会执行相应的更新操作。对于组件的渲染 Watcher,它会重新执行组件的渲染函数,生成新的虚拟 DOM。
- 虚拟 DOM 对比:Vue 会将新生成的虚拟 DOM 与旧的虚拟 DOM 进行对比,找出两者之间的差异。
- 真实 DOM 更新:根据虚拟 DOM 的差异,Vue 会对真实 DOM 进行最小化的更新操作,只更新发生变化的部分,从而提高性能。
4、vue 和 react 的 diff 算法区别是什么
Vue 的 diff 算法
- Vue 的 diff 算法是基于双端比较的。在更新虚拟 DOM 时,Vue 会同时从新旧虚拟 DOM 的两端开始比较,找到相同的节点进行更新,提高了比较的效率。
- 对于列表的更新,Vue 会通过 key 属性来识别节点,尽量复用相同的节点,减少 DOM 操作。
React 的 diff 算法
- React 的 diff 算法是基于单端比较的。它首先比较根节点,如果根节点不同,则直接替换整个子树。如果根节点相同,则继续比较子节点。
- React 的 diff 算法采用了启发式的策略,对于同层级的节点,它会假设节点的位置是不变的,只进行同位置节点的比较。如果节点的位置发生了变化,React 会进行额外的处理,但可能会导致一些不必要的 DOM 操作。
5、react 的 fiber 机制
React 的 Fiber 机制是一种对 React 核心算法的重新实现,旨在提高 React 应用的性能和响应性。
- 任务分割:将渲染任务分割成小的任务单元,称为 Fiber。每个 Fiber 代表一个虚拟 DOM 节点,可以暂停、恢复和重新调度任务。这样可以避免长时间占用主线程,使得浏览器有机会处理用户输入和其他事件。
- 优先级调度:Fiber 机制引入了优先级的概念,可以根据任务的优先级来决定哪些任务先执行,哪些任务可以延迟执行。例如,用户交互相关的任务会被赋予较高的优先级,优先执行,以保证应用的响应性。
- 增量渲染:Fiber 机制支持增量渲染,即可以在部分渲染完成后就显示给用户,而不是等待整个渲染过程完成。这样可以减少用户等待的时间,提高用户体验。
- 可中断和恢复:渲染过程可以被中断,然后在合适的时候恢复。例如,当浏览器有更高优先级的任务需要处理时,React 可以暂停渲染,等浏览器空闲时再继续。
6、vue-router 的 api 有哪些,使用的场景是什么
Vue Router 的 API
router.push()
:导航到指定的路由,可以传递参数。router.replace()
:导航到指定的路由,替换当前历史记录。router.go()
:在历史记录中向前或向后导航。router.back()
:后退一步。router.forward()
:前进一步。$route
:当前激活的路由信息对象,包含路由的路径、参数、查询参数等。$router
:路由器实例,可以访问路由的各种方法和属性。
使用场景
- 单页应用(SPA):Vue Router 是构建单页应用的重要组成部分,用于管理应用的不同页面和导航。
- 页面切换和路由过渡:可以实现页面之间的平滑过渡效果,提升用户体验。
- 路由参数传递:在不同页面之间传递参数,方便数据的共享和处理。
- 导航守卫:可以在路由切换前后执行一些逻辑,如权限验证、登录状态检查等。