面试遇到的题目--vue

167 阅读3分钟

vue也算是一个比较常见的前端框架了,在不少公司中都有进行使用,而且我从接触vue到上手写vue的项目也有两三年的时间了,正好这两天也在面试,就把面试过程中遇到的问题就整理了一下。

面试前呢,我是在开课吧那里报了一个全栈的课程,当时的想法也没有那么大的野心,一下子就成为全栈工程师,想着能够对vue有个深入的理解,对其他框架例如react、flutter等有个初步的了解就行,现在看来基本上是达到了。

附上开课吧上课的截图,杨村长讲解的vue很详细,收益匪浅,推荐一波。

image.png

1、vue的生命周期钩子函数有哪些,父子组件的渲染顺序是怎么样的?

钩子函数这里就不多做赘述了,大家肯定都知道。这儿主要讲一下父子组件的渲染顺序,当父组件生命周期函数到beforemount的时候,就开始渲染子组件了,具体的顺序是:

父beforeCreate->父created->父beforeMount->子beforeCreate->子created->子beforeMount->子mounted->父mounted

2、v-for和v-if的优先级

这个问题在面试中也经常会被问到,这个问题可以在源码中找到答案,是一个优先执行哪一块代码的问题,vue2中v-if是在v-for的上面执行的,这就导致了要求尽量不要让v-for和v-if在一行使用;不过在vue3中进行了切换。

3、为什么在组件中的data要以函数方式存在,而根组件总没有这个要求

这个问题就是涉及到vue中组件实例的个数是不定的,或许一个组件会有多个实例,为了防止多个实例data数据发生互相污染,就使用函数形式进行一个规避;而根组件只会有一个根实例,就不会有这个问题,所以就没有要求;

4、Vue组件中的通讯问题

这也是一个老问题了,基本上每次面试都会问到;我这里在项目中使用的最多的就是props、$emit这一对传值方式,像常见的还有eventbus事件总线、vuex等;如果有向外输出组件的话,provide/inject这一对传值就很好用了,大家可以尝试一下;

5、谈谈对MVVM的理解

不仅解决了MV耦合问题,还同时解决了维护两者映射关系的大量繁杂代码和DOM操作代码,在提高开发效率、可读性同时还保持了优越的性能表现。

6、vue性能优化方法

  1. 路由懒加载,这一点就不展开说了;
  2. 多使用v-show复现DOM而不是使用v-if;
  3. 在vue2的项目中,使用v-for循环时避免同时使用v-if;
  4. 事件的销毁,比如一些全局的定时器、自定义组件等,可以放在beforeDestroy中进行销毁;
  5. 图片懒加载
  6. 第三方插件按需引入
  7. 变量本地化

暂时就遇到这么多,之后在遇到的话继续补充好了。

如有错误,还希望指出,谢谢大家