vue面试汇总

文章详细介绍了Vue的优势,如数据双向绑定和组件化开发,以及MVVM与MVC的区别。提到了Vue的常用修饰符如.stop和.prevent,还有v-if和v-show的差异。此外,讨论了v-for与v-if的使用策略,以及key在Vue中的重要性。文章还涵盖了Vue的生命周期、计算属性与监听器的区别、组件封装过程、数据传递方法,以及VueRouter和Vuex的相关知识,包括路由配置、路由守卫和Vuex的五大部分。
摘要由CSDN通过智能技术生成

1、vue的最大优势?

比较轻量 中国人自己写的框架 文档易懂

实现数据双向绑定、数据驱动视图、组件化开发、数据和视图分离、单页面应用可以实现页面数据局部更新

2、MVVM和MVC的区别

MVC:一种传统的设计模式(分层架构思想,后端),即数据、视图、控制器

MVVM:vue采用的设计模式(数据双向绑定模式。由MVC演变而来),实现数据自动双向同步,无需操作dom

3、vue常用修饰符

.stop:阻止事件冒泡

.prevent:阻止默认事件(表单的提交)

.once:事件只能触发一次

.capture:事件捕获

.self:e.target是自身才会触发(即触发事件和绑定事件是同一元素)

.enter:监听键盘enter键

4、对vue渐进式的理解

使用模块化规范,实现自助餐式开发,用什么导什么,最大程度上节约资源

5、vue的指令及作用

v-on:给标签绑定函数(缩写为@)

v-bind:动态绑定(缩写为:)

v-slot:插槽(缩写为#)

v-for:循环

v-show:

v-if:

v-else:

v-text:解析文本

v-html:解析html标签

6、为什么要避免v-for和v-if在一起使用

v-for的优先级比v-if高,一起只用时会像遍历再判断,性能低

解决方案:外加template判断

7、v-if和v-show的区别

相同点:当两者为true时显示,false时隐藏

不同点:v-show一定会渲染,只是修改display属性;v-if根据条件渲染

8、vue中key的作用(高效渲染,提高性能)

key是虚拟DOM对象的标识,当状态中的数据变化时,vue会根据新数据生成新的虚拟DOM,

通过key新旧虚拟dom进行对比,从而决定节点是否重新加载以及复用

若虚拟dom中内容没变,则直接使用之前的真实dom

若虚拟dom中内容变了,则生成新的真实dom,替换掉之前的dom

9、v-for指令使用key值的几种情况

1、没有key值(默认下标):不复用,就地更新

2、key值为下标:不复用,就地更新

3、key值为id:复用相同的key,更新不同的key

10、vue中:key作用,为什么不能用索引

因为v-for数据项顺序的改变,vue也不会移动DOM元素来匹配数据项顺序,而是就地更新每个元素

11、vue中有时候数组会更新页面,有时候不更新,这是为什么?

因为vue内部只能监测到数组顺序/位置的改变/数量的改变,但是值被重新赋予监测不到。可以用Vue.set()/vm.$set()实现

一下方法会触发数组的改变,v-for会监测到并更新页面

push() 添加元素到数组最后

pop() 删除数组最后元素

shift() 删除数组最前元素

unshift() 添加元素到数组最前

splice() 从某个下标开始删除指定数量元素

reverse() 翻转数组

12、计算属性和监听器的区别

1、计算属性有缓存机制,监听器没有

2、计算属性不支持异步操作,监听器支持异步操作

3、计算属性是一个额外新增的属性,监听器只能监听data中的属性

4、计算属性有返回值return,监听器不需要return

5、计算属性可以监听多个数据变化(计算属性内部用到的数据变化了,就会执行计算属性方法,监听器只能监听一个数据变化)

13、说一说封装vue组件的过程

写好组件用export default导出,在main.js文件里引入并使用vue.component()全局注册,或者在其他组件文件内引入,并在vue配置项的components里定义

14、vue组件传值

父传子:父组件中在使用子组件时通过行内属性传值,子组件props接收(单向数据流)

子传父:使用子组件时用@自定义时间名=父组件中的方法(事件监听),子组件使用$emit触发父组件方法

非父子:vuex

15、vue组件中的data为什么必须是函数?

为了组件复用时生成新的对象,数据互不影响。不然如果data是个对象,对象是应用类型,一旦一个地方修改就会全部修改

16、组件命名规范

链式命名:my-component

大驼峰命名:MyComponent

17、scoped作用与原理

作用:组件css作用域,避免组件内部样式被父组件覆盖

18、vue的声明周期

四阶段:

创建前/后

挂载前/后

更新前/后

销毁前/后

八大钩子函数

19、vue中nextTick的原理是什么?

a、为什么需要nextTick?

vue是异步修改dom并且不鼓励开发者直接接触dom,但有时业务需要必须对数据更改刷新后的dom做处理

nextTick等待下一次dom更新结束后再执行

nextTick底层是promise,所以是微任务,原理就是vue通过异步队列控制dom更新

20、v-slot插槽与作用域插槽

概念:子组件提供给父组件的一个赞占位符

插槽作用:父组件传递html结构给子组件

具名插槽(<slot name="child1"></slot>  <template v-slot="child1"></template>):父组件传递多个html结构给子组件

作用域插槽(带数据的插槽,即带参数的插槽,<slot :data="data"></slot> <Child><template slot-scope="slotProps.data"></template></Child>):父组件给子组件传递插槽时,可以使用子组件内部的数据

21、自定义指令的方法有哪些?它有那些钩子函数

全局定义指令:vue对象的directive方法,两个参数(指令名称,函数),组件内定义指令:directives

钩子函数:bind(绑定事件触发)、inserted(节点插入时触发)、update(组件内相关更新)

钩子函数参数:el、binding

22、vue路由作用和原理

作用:实现单页面应用,同个页面根据路由hash值渲染不同内容

原理:监听location的hash值

23、路由间怎么跳转的?有哪些方式?

声明式跳转:router-link

编程式跳转:this.$router.push()、this.$router.replace()、this.$router.go()

24、vue-router怎么配置路由(路由配置六个流程)

1、引入组件

2、创建路由对象router

3、配置路由path和组件,生成路由对象routes

4、将路由对象挂在到vue实例上

5、页面使用<router-view></router-view>承载路由

6、<router-link to='要跳转的路由'></router-link>设置路由导航

25、vue-router的钩子函数有哪些(导航守卫)

A、全局钩子beforeEach、beforeResolve、afterEach(全局前置守卫,所有路由生效)

B、路由独享守卫beforeEnter(可直接配置在路由上,只对这个路由生效)

C、组件内钩子(beforeRouterEnter、beforeRouterUpdate、beforeRouterLeave)

26、路由传值方式有哪几种

a、/path?key=vlaue

b、/path/value

c、this.$router.push({path:'/path',query:{key:value}})

d、this.$router.push({name:'com',params:{key:value}})

27、vue路由实现模式:hash模式和history模式

a、路径不同

hash带# history不带#

b、工作模式不同

hash:修改当前页面hash 不需要服务器额外配置

history:会给服务器发送请求,需要服务器配置

28、请说出路由配置项常用的属性及作用

路由配置参数:

path:跳转路由

component:路由相应组件

name:命名路由

children:子路由配置参数(路由嵌套)

props:路由解耦(组件可以复用,但是路由给子组件传值后通过$route获取参数会导致子组件无法复用,因此用到props解耦)

redirect:重定向路由

29、$route和$router的区别

routes:数组,路由配置规则

router:对象,路由独显

$router:对象,用于跳转路由和传递参数

$route:对象,用于接收路由跳转参数

30、跟keep-alive有关的生命周期是哪些?

在开发vue项目时,大部分组件没必要多次渲染,所以vue提供了一个内置组件keep-alive来缓存组件内部状态,避免重新渲染。

被keep-alive包含的组件/路由中,会多出两个生命周期钩子:activated、deactivated

activated:组件第一次渲染时会被调用,之后再每次缓存组件被激活时调用

deactivated:组件被停用(离开路由)时调用

31、vuex作用及五大组成部分

作用:全局数据管理、解决组件间复杂传参问题

组成:

state:存储数据

getter:派生数据,相当于state的计算属性

mutations:修改state中的数据

actions:异步更新数据

module:模块化vuex数据

32、vuex中action工作流程

a、组件给actions发送消息

b、actions异步请求数据

c、actions将请求到的数据提交给mutations

d、mutations同步更新state中的数据

33、vue中踩过的坑

1、v-for和v-if不能同时使用

2、向对象新增属性,属性值变化视图未刷新,要使用$set设置

3、created中操作dom报错,找不到对应dom,使用nextTick解决该问题

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值