Javascript

Vue面试题总结

本文主要是介绍Vue面试题总结,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1.你能讲讲MVVM吗

MVVM 是 Model-View-ViewModel 缩写,也就是把 MVC 中的 Controller 演变成 ViewModel。Model 层代表数据模型,View 代表 UI 组件,

ViewModel 是 View 和 Model 层的桥梁,数据会绑定到 viewModel 层并自动将数据渲染到页面中,视图变化的时候会通知 viewModel 层更新数据。

2.生命周期

1 初始化前  --BeforeCreated

2 初始化完成 ---***:发送ajax   --created    //比较常用

3 双向数据绑定前 ---BeforeMount

4 双向数据绑定完成 --Mounted

5 更新前 --BeforeUpdate

6 更新完成--updated

7 销毁前--BeforeDestroyed

8 销毁完成--Destroyed

3.Vue 的双向数据绑定原理是什么?

Vue 采用数据劫持+订阅发布模式实现双向绑定。通过 Object.defineProperty()方法来为组件中 data 的每个属性添加 get 和 set 方法,在数据变动时,触发 set 里相应的监听回调函数,将变动信息发布给订阅者

4.说一下v-model的原理和v-on的原理

v-model本质就是一个语法糖,可以看成是value + input方法的语法糖。 可以通过model属性的prop和event属性来进行自定义。原生的v-model,会根据标签的不同生成不同的事件和属性。

v-on原生事件绑定是通过 addEventListener 绑定给真实元素的,组件事件绑定是通过 Vue 自定义的$on 实现的

5.computed、watch和methods区别

1.computed是计算属性,依赖其他属性值,并且computed的值有缓存。只有computed依赖的属性值发生变化,computed的值才会重新计算。
运用场景:一个数据属性在它所依赖的属性发生变化时,也要发生变化。对于任何复杂逻辑,你都应当使用计算属性。

2.watch:没有缓存性,起到观察的作用,即监听数据的变化。watch为一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。
运用场景:侦听一个数的变化,当该数据变化,来处理其他与之相关数据的变化,即一个数据影响别的多个数据。

3.methods:定义函数,它需要手动调用才能执行

6.自定义指令和过滤器

过滤器

<p>{{money | moneyFilters}}</p>
filters: {
	moneyFilters(value) {
		return "¥" + Number(value).toFixed(2)
	}
},

自定义指令

Vue.directive('focus', (a,b)=>{
	a.textContent = b.value.toUpperCase()
})

7.路由中有哪些钩子

全局前置守卫 router.beforeEach

全局后置钩子 router.afterEach

组件内的守卫 beforeRouteEnterbeforeRouteUpdatebeforeRouteLeave

8.data为什么是一个函数

一个组件被复用多次的话,也就会创建多个实例。本质上,这些实例用的都是同一个构造函数。如果 data 是对象的话,对象属于引用类型,会影响到所有的实例。

所以为了保证组件不同的实例之间 data 不冲突,data 必须是一个函数。

9.keep-alive 了解吗?

keep-alive 可以实现组件缓存,当组件切换时不会对当前组件进行卸载。

常用的两个属性 include/exclude,允许组件有条件的进行缓存。

10.组件之间的传值

父传子props 子传父$emit

11.动态路由

index.js

{
    path: '/xiangqing/:id',
    name: 'Xiangqing',
    component: () => import('../views/Xiangqing.vue')
  }

vue

itemBnt(){
	this.$router.push('/xiangqing/'+id)
}

使用this.$route.params.id拿到传过去的id

12.说说的vuex的理解

vuex是状管理,有五个属性 State、 Getter、Mutation 、Action、 Module

state:在vuex中存放数据的地方。使用this.$store.state.count

getters:在vuex中的计算属性。使用this.$store.getters.evenOrOdd

mutations:在vuex主要处理同步操作,使用this.$store.commit('aaa')

actions:在vuex主要处理异步操作,使用this.$store.dispatch('aaa')

 

 

这篇关于Vue面试题总结的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!