06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends

动态组件

当需要渲染的组件不是固定的,可以使用动态组件

动态组件是使用 component 组件,通过一个特殊的attribute is 来实现:

is绑定的值:使用component函数注册的全局组件,

或者在当前组件对象的components对象中注册的组件

动态组件父子通信:和使用普通组件一样,将需要传递的数据及监听的事件放到component组件上

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第1张图片

 keep-alive

keep-alive也是vue内置的组件称为缓存组件,作用是保存当前组件的状态,不被销毁掉

常与动态组件,router-view一起使用

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第2张图片

 这样在组件间来回切换,组件不会销毁与重建,会保持状态

keep-alive属性

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第3张图片

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第4张图片

 06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第5张图片

 缓存组件的生命周期

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第6张图片

 异步组件

vue-cli是基于webpack的,当我们打包时,如果没有进行配置,会把所有组件打包到一个app.js文件夹中,当首次渲染时,需要把整个app.js下载下来,造成首屏渲染较慢

webpack的分包

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第7张图片

 vue中使用异步组件

我们的项目过大了,对于某些组件我们希望通过异步的方式来进行加载(目的是可以对其进行分包处理),那 么Vue中给我们提供了一个函数:defineAsyncComponent

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第8张图片

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第9张图片

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第10张图片

 Suspense

Suspense意思是悬疑的,悬而未决的,常与异步组件一起使用

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第11张图片

 $refs $parent和$root

$refs

vue不推荐我们直接操作dom,当我们想操作元素或者组件时,可以使用$refs

组件实例都有一个$refs属性,是一个对象,持有注册过 ref attribute 的所有 DOM 元素和组件实例。

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第12张图片

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第13张图片 

 $parent

$parent访问父元素

$root 访问根元素

注意:在Vue3中已经移除了$children的属性,所以不可以使用了。

生命周期

每个组件都可能会经历从创建、挂载、更新、卸载等一系列的过程,叫做生命周期

生命周期函数是一些钩子函数,在某个时间会被Vue源码内部进行回调; 通过对生命周期函数的回调,我们可以知道目前组件正在经历什么阶段; 那么我们就可以在该生命周期中编写属于自己的逻辑代码了

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第14张图片

mixin 

代码共享的一种方式(不是数据共享,只是代码共享,让你少些代码,合并到optionsAPI中)

组件和组件之间有时候会存在相同的代码逻辑,我 们希望对相同的代码逻辑进行抽取

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第15张图片

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第16张图片

 Mixin的合并规则

生命周期会放到一个数组中全部调用

data:data中数据名重复,肯定使用当前组件自己的

methods,components:key重复,用自己的

全局混入mixin

当所有组件都有共同代码,可以使用全局混入

全局的Mixin可以使用 应用app的方法 mixin 来完成注册

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第17张图片

 extends(了解)

extends也是做代码复用的,算是一个历史遗留问题,刚推出时不好用,就又推出了mixin

用法与mixin类似,template不会继承,推荐大家使用mixin

06 vue3 动态组件 keep-alive 异步组件 Suspense $refs 生命周期 mixin extends_第18张图片

你可能感兴趣的:(vue3知识总结,前端,javascript,vue.js)