vue常用面试题(四)

1. vue.js的两个核心是什么

数据驱动(数据改变会驱动页面更新)和组件化

2. Vue中一个元素如何绑定多个事件

使用@click=“handle();handle1()”,分号隔开即可

3. Vue路由有几种实现方式,它们的异同点是什么

hash: 使用变更hash不会刷新页面的特性, 来变更路由, 做到单页面无刷新

history: 使用html5的history方法, 不支持老旧浏览器, 但是如果要部署到服务器的化, 需要在ng上进行相应的正向代理跳转, 否则拷贝的链接会打不开

4. Vue第一次加载页面会出发哪些钩子

beforeMount  mounted beforeCreate created

5. v-for中key的理解

加了key之后,每个dom有了自己唯一的标识,这样修改的时候可以精准的找到并修改,从而节省了性能。所以,key的值必须唯一,而且不可以用随机数,用时间,不建议用下标

6. Vue页面加载时v-show设置的隐藏元素出现导致页面闪烁问题,解决方案是什么

v-cloak

7. delete和Vue.delete删除数组的区别

delete只是被删除的元素变成了 empty/undefined 其他的元素的键值还是不变。

Vue.delete 直接删除了数组 改变了数组的键值。

8. 如何优化SPA应用的首屏加载速度慢的问题

静态资源本地缓存 组件重复打包 UI框架按需加载 压缩图片 格式化代码

9. vue-router的导航守卫

全局守卫

  • router.beforeEach 全局前置守卫 进入路由之前
  • router.beforeResolve 全局解析守卫(2.5.0+) 在beforeRouteEnter调用之后调用
  • router.afterEach 全局后置钩子 进入路由之后

路由局部组件守卫

  • beforeRouteEnter 进入路由前
  • beforeRouteUpdate (2.2) 路由复用同一个组件时
  • beforeRouteLeave 离开当前路由时

10. Vue-cli简化了我们哪些工作

简化了一个个去创建项目文件以及基本项目需要的各种依赖包及插件的下载

11. vue组件中的name有什么用

详解

12. vue路由传参需要注意什么?

https://blog.csdn.net/sinat_17775997/article/details/78748825

13. vue中query路由传参与params传参哪个刷新页面会丢失

query刷新不会丢失
params会丢失
解决方式只需要在router-link路由的后面利用?的形式 进行参数的拼接

14. vue路由守卫和生命周期的执行顺序

从组件a到组件b

切换组件b ---> beforeRouteLeave(上一组件)
---> beforeEach ---> beforeEnter ---> beforeRouteEnter ---> beforeResolve ---> afterEach ---> beforeCreate ---> created ---> beforeMount ---> beforeDestroy(上一组件) ---> destroyed(上一组件) ---> mounted

大致执行顺序
在这里插入图片描述

15. 为啥vue2中不能检测数组的变化,怎么解决?

因为Object.definedPropoty无法检测数组的方法 使用this.$set

16. Vue3响应式原理为什么换成了Proxy

vue2中Object.definedPropoty通过get和set俩个属性对数据劫持实现响应式

缺点:

  • 检测不到对象属性的增加或者删除
  • 数组的方法检测不到
  • 需要对每一个属性进行遍历监听,如果嵌套对象需要深层监听,造成性能浪费

vue3中的proxy本身就是用于监听对象的,所以对象的所有属性都会被代理,而且可以直接监听到数组的变化

缺点:

  • Proxy不兼容IE

猜你喜欢

转载自blog.csdn.net/qq_47272950/article/details/124275717