Vue面试题4
1.解释Vue中 route 和 router 的区别?
route
是当前激活的路由的信息对象,包含了当前路由的详细信息,如路径、参数、查询字符串等。在 Vue 组件中,可以通过this.$route
访问到这个对象。例如,this.$route.path
可以获取当前路由的路径。router
是 Vue Router 实例的引用,用于配置路由规则和导航操作。你可以通过this.$router
访问这个实例,从而使用方法如this.$router.push()
来编程式地导航到其他路由。
2.Vue中 delete 和 Vue.delete 删除数组的区别?
delete
是 JavaScript 的内建操作符,用于删除对象的属性或数组的元素。对于数组,delete
会将指定的元素设为undefined
,但不会改变数组的长度。例如:delete arr[1]
会将arr[1]
设置为undefined
,但arr.length
不变。Vue.delete
是 Vue 提供的一个方法,用于确保 Vue 的响应式系统能正确地追踪到删除操作。它可以用来删除对象的属性或数组的元素,并确保更新视图。例如:Vue.delete(arr, 1)
可以正确地删除数组的指定元素并触发视图更新。
3.请说明Vue Watch 和 Dep 的关系?
Watch
是 Vue 的一个功能,用于监听数据的变化并执行相应的回调。它用于对 Vue 实例上的数据进行观察,以便在数据发生变化时做出反应。Dep
是 Vue 内部的一个概念,表示依赖收集器。每个响应式属性都会创建一个Dep
实例,用于收集依赖于该属性的 Watcher。当属性值变化时,Dep
会通知所有相关的 Watcher 进行更新。- 简单来说,
Watch
是高层 API,用于处理数据变化时的逻辑,而Dep
是底层机制,用于确保响应式数据的变化能够被追踪并通知相应的 Watcher。
4.v-on 可以实现监听多个方法吗?
- 可以。
v-on
指令用于监听 DOM 事件,并在事件发生时调用方法。你可以通过多次使用v-on
或在方法中调用多个方法来实现监听多个方法。示例:
这样在点击按钮时,会依次调用<button v-on:click="method1; method2">Click me</button>
method1
和method2
方法。
5.简述Vue中如何扩展一个组件?
- 在 Vue 中,扩展一个组件通常涉及到创建一个新的组件,继承已有组件的功能,或对其进行修改。可以使用以下几种方法:
- 组件继承:可以通过
extends
关键字创建一个新组件,该组件继承自一个已有的组件。例如:const BaseComponent = Vue.extend({ // 基础组件的选项 }); const ExtendedComponent = Vue.extend({ extends: BaseComponent, // 扩展或覆盖的选项 });
- 组合:通过组合多个组件来扩展功能。例如,使用插槽(slots)将一个组件嵌入到另一个组件中,或使用 mixins 将公共功能复用到多个组件中。
- 使用混入(mixins):可以通过定义混入对象来封装可复用的逻辑,并在组件中引入。例如:
const myMixin = { data() { return { message: 'Hello from mixin!' }; } }; new Vue({ mixins: [myMixin], // 组件选项 });
- 组件继承:可以通过