VUE + VUEX 高频面试题合集

这篇博客汇总了Vue.js和Vuex的面试重点,包括Vue常见指令、双向数据绑定原理、路由跳转和传参方式、组件间通信、路由守卫、Vuex的理解、混入、插槽、跨域解决方案、封装请求经验、watch与computed的异同点等,全面覆盖Vue开发中的关键知识点。
摘要由CSDN通过智能技术生成

目录

1. Vue常见的指令有哪些,有什么用 

2. 双向数据绑定的原理

vue2双向数据绑定原理

vue3双向数据绑定原理

区别

3. 路由的跳转和传参有哪几种方式

声明式

函数式

其他

4. 组件间的通讯方式有哪些

5. 谈一谈对路由守卫的理解

路由守卫

全局前置守卫

1. 三个参数

2.  注意

3.  示例

 路由独享的守卫

6. 谈一谈对Vuex的理解

VUEX

作用 

核心概念

1、state         存放全局初始化变量

2、getter        对象状态进行加工函数

3、mutation   修改state的状态

4、action       执行异步操作,不能修改

5、module     模块

解决vuex刷新状态重置问题

其他

7. 谈一谈对混入的理解

混入

选项合并

全局混入

注意

8. 谈一谈对插槽的理解

插槽

插槽的使用

注意

9. 什么是跨域,如何解决

同源策略CORS

解决跨域

10. 谈一谈封装请求的心得

11. watch和computed的共同点和不同点

共同点

不同点


1. Vue常见的指令有哪些,有什么用 

指令

作用

备注

v-cloak

防止页面闪烁

在vue加载之前v-cloak是存在,vue加载结束之后v-cloak就隐藏了,利用这个特性可以实现:界面防止闪烁

v-text

会替换掉元素里的内容

区别:

        v-html会解析HTML代码和样式(富文本)

        v-text直接展示原始内容

v-html

可以渲染html界面

v-bind

属性绑定

1. 界面元素属性值的绑定

2. 括号里不加引号的都是我们data里的数据读取

3. 如果想使用字符串需要加上引号

4. 里面可以写表达式

5. 里面也可以调用定义好的方法,拿到的是方法的返回值

6. 简写  :

v-on

事件绑定

简写@

v-model

数据双向绑定

1. 作用:数据双向绑定

2. 注意:绑定的是表单控件

3. 双向数据绑定:  数据变化后更新视图;视图变化后更新数据。Model层里的数据和View层上的数据只要有一方变化,另一方随之改变。

4. 原理: 后面有详细说明

v-for      :key

遍历

1. 遍历数组,参数(item,index) in list

2. 遍历对象,参数(value,key,index) in list

3. 遍历数字,num in 10 (1~10)

4. key在使用v-for的时候都需要去设置key

        4-1. 让界面元素和数组里的每个记录进行绑定

        4-2. key只能是字符串或者数字

        4-3. key必须是唯一的

        4-4. “就地复用” 策略

        4-5. key值的作用---提高重拍效率

        4-6. key值的计算方法---diff算法

v-if  

v-else

通过元素的删除和添加控制元素的显示和隐藏

1. 区别

        1-1. v-if删除dom元素

        1-2. v-show设置display:none

2. 应用场景

        2-1. v-if只修改一次的时候可以使用v-if

        2-2. v-show频繁切换的时候可以使用v-show

v-show

通过display属性,控制元素的显示和隐藏

2. 双向数据绑定的原理

vue2双向数据绑定原理

        双向数据绑定v-model的原理:采用“数据劫持”结合“发布者-订阅者”模式的方式,通过“Object.defineProperty()”方法来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。也就是说数据和视图同步,数据发生变化,视图跟着变化,视图变化,数据也随之发生改变。

 Object.defineProperty()方法有三个参数:
            obj:属性的对象。
            prop:要定义或修改的属性。
            descriptor:一个对象,包括get和set方法

缺点:

根据官方文档,双向数据绑定失效总共有三种情况:

  1. 当你利用索引直接设置一个数组项时,例如:vm.items[indexOfItem] = newValue
  2. 当你修改数组的长度时,例如:vm.items.length = newLength
  3. 对象中的属性增加或删除时

vue3双向数据绑定原理

         通过Proxy(代理)的方式实现,拦截对data任意属性的操作, 包括属性值的读写、添加、删除等;通过 Reflect(反射): 动态对被代理对象的相应属性进行特定的操作。

区别

        Object.defineProperty 是 ES5 的方法,Proxy 是 ES6 的方法

        Object.defineProperty 不能监听到数组下标变化和对象新增属性,Proxy可以

        Object.defineProperty是劫持对象属性,Proxy是代理整个对象

       Object.defineProperty局限性大,只能针对单属性监听,所以在一开始就要全部递归监听。Proxy对象嵌套属性运行时递归,用到才代理,也不需要维护特别多的依赖关系,性能提升很大,且首次渲染更快

        Object.defineProperty 会污染源对象,修改时是修改源对象。Proxy是对原对象进行代理并返回一个新的代理对象,修改的是代理对象

3. 路由的跳转和传参有哪几种方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值