面试官开场:简单介绍以下你自己,还有你的项目
遂把简历背了一遍
可能着急招人,没怎么问原声js,只问vue,要进来就能干活的
1.说一说vue数据双向绑定原理
A:把一个JavaScript对象当左数据传入vue实例当做data时,vue会遍历这个对象的所有属性,通过object.definePropety将这些属性转换成getter和setter。由于js的限制,vue无法直接检测到对象的增加或删除,所以vue初始实例后,是不支持根级别的属性的动态添加,但是有两个方法可以实现,Vue.set 和 vm.$set
2.说一说生命周期
A:beforeCreate,created,beforeMount,mounted,beforeUpdate,update,beforeDestory,destoryed. 背了一遍
3.什么时候可以操作DOM树
A:mounted
4.computed 你知道吗
A:计算属性。 然后不知道说什么,就说了一些平时用到computed的场景
5.watch知道吗,跟computed的区别是什么
A:监听。computed有缓存,而watch没有
6.key有什么作用
A:(不太清楚,懵了)在v-for li的时候会用到key,可以给循环渲染出来的li添加一个用于识别的值,一般我会用index或者id
正确答案:key官方文档key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。使用 key,它会基于 key 的变化重新排列元素顺序,并且会移除 key 不存在的元素。1.完整地触发组件的生命周期钩子 2.触发过渡
7.v-for和v-if能不能一起使用,为什么
A:不能,遇到过 但是不清楚原理
正确答案:v-for比v-if优先,如果每一次都需要遍历整个数组,将会影响速度,尤其是当之需要渲染很小一部分的时候。
8.组件怎么注册
A:先import,然后在conponents里面写
9.路由有哪些跳转方式
A:我用的比较多的是push,replace还有go
正确答案:router-link,this.$router.push() (函数里面调用),this.$router.replace() (函数里面调用), this.$router.go(n) ()
10.路由有哪些钩子
A:路由钩子我不太清除,但是我用过全局导航守卫,就是router.beforeEach(),里面传入一个回调函数,这个函数有三个参数,分别是to,指即将要到的路由,from,当前从这个页面跳转的路由,next,一个方法,可以用来设置跳到别的路由,或者报错
正确答案:路由钩子及其使用场景
11.用过vuex吗,说说他的几个属性
A:用过,vuex是vue的状态管理模式,
- state是单一状态树
- mutation是类似事件,但不是事件,提交mutation是用来改变状态的唯一方法,它是同步的
- action是用来提交mutation的,它可以是异步的,commit mutation里面的事件即可。在组件里触发action可以通过store.dispatch()触发
- module可以分割模块,每个模块都可以有他们的state,mutation,action
- getter忘记了 不敢提
正确答案:在 store 中定义“getter”(可以认为是 store 的计算属性),就像计算属性一样,getter 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。
网友评论