IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 7.27 组件缓存 keep-alive -> 正文阅读

[JavaScript知识库]7.27 组件缓存 keep-alive

动态模板

<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');
}

当用到的时候在引入,不会在一开始就引入

组件缓存(刷新丢失)

  1. keep-alive
<keep-alive> 
   <component :is="flag"></component>
<keep-alive>
import TestA from 'xxx'
data() {
   return {
      flag: 'TestA',
   }
}

当通过tab切换组件(上面所说的动态模板,切换组件)的时候,组件中的内容不会改变。但是通过路由跳转的时候,不能够保存

  1. 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'
   }
}
  1. 路由缓存
<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:不需要缓存
  }
}

全局组件的定义

  1. myComponent:组件名
    第二个参数:组件渲染的内容
//main.js中
Vue.component('myComponent',{render() {return <h1>hello world</h1>}})

但这种方式,时用性不高,内容有时可能很长

  1. 将组件放到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)

  1. directory: 要查找的文件路径
  2. useSubdirectories: 是否查找子目录
  3. 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,**不然导出来,没有名字

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:38:44  更:2021-07-28 07:39:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 17:14:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码