7.27 组件缓存 keep-alive
2021/7/28 6:05:53
本文主要是介绍7.27 组件缓存 keep-alive,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
vue组件辅助
- 动态模板
- 异步组件
- 组件缓存(刷新丢失)
- 全局组件的定义
动态模板
<component :is="flag"> </component> <button @click="flag = TestB"> </button> <button @click="flag = TestA"> </button> import TestA from 'xxx' data() { return { flag: 'TestA' } }
可通过 动态渲染模板
异步组件
components: { 'TestA': () => import('xxx'); }
当用到的时候在引入,不会在一开始就引入
组件缓存(刷新丢失)
- keep-alive
<keep-alive> <component :is="flag"></component> <keep-alive> import TestA from 'xxx' data() { return { flag: 'TestA', } }
当通过tab切换组件(上面所说的动态模板,切换组件)的时候,组件中的内容不会改变。但是通过路由跳转的时候,不能够保存
- include: 匹配成功,才会缓存
exclude:添加了的,不会缓存
//只有TestA存在缓存 <keep-alive include="TestA"> <component :is="flag"></component> <component :is="flag1"></component> <keep-alive> //除了TestA组件都有缓存 <keep-alive exclude="TestA"> <component :is="flag"></component> <component :is="flag1"></component> <keep-alive> import TestA from 'xxx' import TestB from 'xxx' data() { return { flag: 'TestA', flag1: 'TestB' } }
- 路由缓存
<keep-alive > <router-view v-if="$route.meta.keepAlive"> </router-view> <keep-alive> //router.js文件中 { path:'/', name: 'About', component: () => import('xxx'); meta: { keepAlive:true; // true:需要缓存 false:不需要缓存 } }
全局组件的定义
- myComponent:组件名
第二个参数:组件渲染的内容
//main.js中 Vue.component('myComponent',{render() {return <h1>hello world</h1>}})
但这种方式,时用性不高,内容有时可能很长
- 将组件放到component/global文件夹下 每个组件用一个文件夹装,该文件夹中有两个文件,一个main.vue文件,用来定义组件,一个index.js文件,用来导出文件,在global文件夹下,又建一个index文件,统一将文件注册到全局
//main.js // 引入全局自定义组件 import './components/global' //global文件夹下的index.js import Vue from 'vue' const componentsContext = require.context('./', true, /\.js$/); componentsContext.keys().forEach(component => { const componentConfig = componentsContext(component) // 兼容import export和require module.export两种规范 const ctrl = componentConfig.default || componentConfig; // 加载全局组件 if (ctrl && ctrl.name) { Vue.component(ctrl.name, ctrl); } })
解析:
require.context(directory, useSubdirectories, regExp)
- directory: 要查找的文件路径
- useSubdirectories: 是否查找子目录
- regExp: 要匹配文件的正则
componentsContext.keys()
//当前目录下所有的js文件
0: “./index.js”
1: “./my-banner/index.js”
2: “./my-button/index.js”
3: “./my-button2/index.js”
注意:main.vue定义组件中,组件一定要写**name,**不然导出来,没有名字
这篇关于7.27 组件缓存 keep-alive的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Java管理系统项目实战入门教程
- 2024-11-02Java监控系统项目实战教程
- 2024-11-02Java就业项目项目实战:从入门到初级工程师的必备技能
- 2024-11-02Java全端项目实战入门教程
- 2024-11-02Java全栈项目实战:从入门到初级应用
- 2024-11-02Java日志系统项目实战:初学者完全指南
- 2024-11-02Java微服务系统项目实战入门教程
- 2024-11-02Java微服务项目实战:新手入门指南
- 2024-11-02Java项目实战:新手入门教程
- 2024-11-02Java小程序项目实战:从入门到简单应用