当前位置: 首页 > Web前端 > vue.js

vue面试题(这个面试题还有待完善,只记录自己遇到的面试题)

时间:2023-04-01 00:38:46 vue.js

1.什么是MVVM?MVVM是一种设计思想,Model-View-ViewModel的缩写,Model代表数据Model,View代表Ui视图,ViewModel就像一座桥梁,连接Model和View,当其中一个数据被修改时,ViewModel会将修改后的数据传递给ViewModel2.v-model和.syncv-model的区别v-model是form表单的双向数据绑定方式,可以实现双向数据输入的绑定。原理是通过输入事件和事件对象,将表单上的值赋值给v。-model属性写法.sync.sync修饰符其实是父组件监听子组件请求更新某个props.sync的一种简写语法,功能类似与v-model很相似,都是为了实现数据的“双向绑定”,本质上并不是真正的双向绑定,而是语法糖。写法value=val">相比之下,.sync更灵活,它可以用于多个props,而v-model在一个组件中只能有一个。(Vue3中的v-model已经可以被多个props使用,.sync被丢弃)从语义上看,v-model绑定的值是指这个组件的绑定值,比如input组件,select组件,日期和时间选择组件,颜色选择器组件,以及这些组件绑定的值更适合使用v-model。在其他情况下,没有这样的语义,个人认为还是用.sync比较好。3、组件之间的通信方式有哪些?1.父子之间通过props传递数据2.子传递父子数据通过$emit通过自定义事件传递给父组件3.兄弟传递兄弟最简单的方式肯定是直接通过vuex传递,也可以使用pinia在vue3中;那么事件总线EventBus也可以用来订阅和发布消息。有一些缺点:当多个后代组件同时依赖同一个父组件提供数据时,只要任何一个组件修改了数据,所有依赖的组件都会受到影响,这实际上增加了耦合度。任何级别的访问都会使数据跟踪变得更加困难。无法准确定位是哪个层级改变了数据。当数据出现问题时,尤其是多人协作时,可能会大大增加问题定位的损失5。如何在vue3中进行双向数据绑定。基本数据类型由ref定义和绑定。如果是引用类型Object或者Array,这里使用reactive;6.vue3中ref和toref的区别ref是针对原始数据的当复制修改数据时,视图数据会发生变化,但原始数据不会发生变化。toref是对原始数据的引用。修改数据时,不仅视图数据会发生变化,原始数据也会发生变化。7.什么是nextTick?有什么作用,常用场景有哪些?nextTick本质上是一个执行延迟回调的钩子,因为Vue在数据修改后不会立即更新DOM,而是在同一个事件循环中等待数据发生变化后再统一执行DOM更新。等待Vue更新完DOM后,可以在数据变化后立即使用Vue.nextTick(callback)。这样回调函数就会在DOM更新完成后被调用。总的来说,nextTick方法的作用是延迟代码的执行,在DOM更新后基于新的DOM进行操作;update(){this.isShow=!isShow//修改v-show//此时dom还没有更新第一次勾选完成,自然获取不到焦点document.getElementById("keywords").focus()}update(){this.isShow=!isShow//修改v-showthis.$nextTick(()=>{//此时代码延迟调用,调用after即可正常获取焦点DOM更新完成document.getElementById("keywords").focus()})