vue基础面试题+2023年
Vue.js是一款流行的前端JavaScript框架,用于构建用户界面。在Vue面试中,了解其基础概念和机制是至关重要的。以下是基于提供的文件内容整理的一些关键知识点: 1. **Vue中data为何为函数**: - Vue组件是为了实现代码复用,当组件的data是一个对象时,由于JavaScript的对象是引用类型,多个组件实例会共享同一份数据副本,导致数据相互影响。 -如果data是一个函数,每次创建组件实例时,都会调用这个函数生成新的数据对象,确保每个实例都有自己的独立数据副本,避免了数据污染问题。 2. **Vue组件通信方式**: - **ref通信**:通过`ref`属性可以获取到子组件的实例,从而调用子组件的方法或访问其属性。 - **$children/$parent**:直接访问子组件或父组件的实例,但不推荐用于复杂的通信场景。 - **props/$emit**:父组件通过props向子组件传递数据,子组件通过`$emit`触发事件来通知父组件。 - **async修饰符**:在事件处理函数中,配合`this.$emit`用于异步操作。 - **EventBus**:创建一个全局事件总线对象,通过发布/订阅模式实现组件间通信。 - **provide/inject**:允许祖先组件向子孙组件提供数据,无需依赖组件层级关系。 - **Vuex**:用于集中管理全局状态。 - **attrs/listeners**:用于隔代组件通信,结合`inheritAttrs`和`v-bind/v-on`来传递属性和事件。 - **v-slot(作用域插槽)**:在2.6版本后,提供了一种更灵活的插槽通信方式,允许父组件访问子组件的数据。 3. **Vuex的工作原理**: - **State**:存储应用的所有状态,是响应式的,状态变化会导致相关组件的更新。 - **Actions**:负责与后台API交互,发起异步操作。 - **Mutations**:唯一修改state的途径,通过提交mutation来变更状态,便于跟踪。 - **Modules**:将Vuex状态管理分模块,便于组织和管理大型项目。 - **Getters**:类似于计算属性,根据state计算出衍生状态。 4. **Vue生命周期**: - **beforeCreate**:实例创建之初,此时数据观测和事件还未初始化。 - **created**:实例创建完成,数据观测和事件已经初始化,但DOM未创建。 - **beforeMount**:在挂载开始之前被调用,此时`$el`属性尚未生成。 - **mounted**:组件挂载完成,DOM渲染完毕,可以访问真实的DOM元素。 - **beforeUpdate**:数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前。 - **updated**:组件DOM更新后调用,此时可以执行依赖DOM的操作。 - **beforeDestroy**:实例销毁前调用,用于清理工作。 - **destroyed**:实例销毁后调用,所有绑定的事件监听器都会被移除。掌握这些核心概念和机制,对于理解Vue的工作原理和编写高效组件至关重要。在面试中,能够深入理解并应用这些知识点,将有助于展示你的Vue技能和经验。
29.37KB
文件大小:
评论区