面经

作者: E1FANG | 来源:发表于2019-10-21 11:43 被阅读0次

    面试官开场:简单介绍以下你自己,还有你的项目
    遂把简历背了一遍
    可能着急招人,没怎么问原声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 的返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。

    相关文章

      网友评论

          本文标题:面经

          本文链接:https://www.haomeiwen.com/subject/xunoectx.html