一、keep-alive 组件有什么作用?

主要用于保留组件状态或避免重新渲染。 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

二、说下vue生命周期钩子函数?

Vue实例创建阶段的生命周期函数

  • 初始化事件及生命周期函数
    • brforeCreate() ————— data 和 methods 中的数据都还没有初始化
  • 创建中,正在初始化 data 和 methods
    • Created() ——————— 如果需要操作 data 中的数据或操作方法,可以放在这个函数里
  • 开始编译模板
    • beforeMount() ————- 模板编译好了,但是还没有放到页面中去
  • 把编译好的模板放到浏览器中去进行渲染

    • mounted() ——————- 页面渲染完成,Vue 实例初始化完毕

      Vue实例运行阶段的生命周期函数

  • 如果数据发生改变

    • beforeUpdate() ———— 页面数据还没有更新,但是 data 中的数据已经更新完毕,页面与数据不同步
  • Diff, 这一步执行,是先根据 data 中的最新数据,在内存中重新计算出一份 dom 树,对比新老两个 dom 树之间的差异…

    • update() ———————— 这时候,数据和页面已经完成更新

      Vue实例销毁阶段的生命周期函数

  • beforeDestroy() ———— 销毁执行之前,实例身上所有的数据和事件,指令等等都可以用,此刻还没有真正执行销毁

  • destroyed() ——————- 执行这个函数的时候,组件中的数据,方法,指令,过滤器等等完全销毁