vue之动态注册并渲染组件---kalrry

2023-05-16

vue之动态注册并渲染组件---kalrry

  • 简介:目录结构
  • 一、普通方法
  • 二、方案二
  • 三、方案三
  • 四、方案四

简介:目录结构

待完善补充

index.vue
dir{
	//目录文件夹
	comp1.vue
	comp2.vue
}

一、普通方法

按照常规做法是在index.vue中直接这样引入并注册:

import comp1 from './dir/comp1.vue'
import comp2 from './dir/comp2.vue'
....
export default {
  components: {
    comp1,
    comp2...
  }
}

存在问题:如果组件少还是很方便的,如果比较多比如30个, 100个,一个一个的import进来则很麻烦,因此如果能够动态遍历一个数组进行动态注册并渲染的话则很方便。

二、方案二

一个解决思路是在index.vue中利用Vue.component注册全局组件并用进行动态渲染

<template>
    <div>
        <component v-for="app in comps" :is="app"></component>
    </div>
</template>
<script>
  import Vue from 'vue'
  export default {
    data () {
      return {
        comps: ['comp1', 'comp2']
      }
    },
    created () {
      this.comps.forEach(app => {
         Vue.components(app, res => require([`./dir/${app}.vue`], res))
      })
    }

  }
</script>

存在问题:但是这样的话每个组件都注册成了全局的了,因此我们朝着注册成为局部组件的方向改进.

三、方案三

在index.vue中利用异步加载require + component标签

<template>
    <div>
        <component v-for="app in comps" :is="app"></component>
    </div>
</template>
<script>
  import Vue from 'vue'
  export default {
    data () {
      return {
        comps: ['comp1', 'comp2'],
        apps: []
      }
    },
    created () {
      this.comps.forEach(app => {
         this.apps.push({app: require(`./dir/${app}.vue`)})
      })
    }

  }
</script>

四、方案四

利用render函数封装成一个类似于component标签的功能,还可以在其中进行一些扩展,
dir目录下新建一个文件asyncLoadComp.vue

<script>
  export default {
    render (h, cxt) {
      return h(require(`./dir/${this.app}.vue`), {
        props: {
          prop: this.prop
        }
      })
    },
    props: {
      app: String,
      prop: Object
    }
  }
</script>

在index.vue中使用

<template>
    <div>
        <async-load-comp v-for="comp in comps" :app="comp" :prop="prop"></async-load-comp>
    </div>
</template>
<script>
  import asyncLoadComp from './asyncLoadComp.vue'
  export default {
    components: {
      asyncLoadComp
    },
    data () {
      return {
        comps: ['comp1', 'comp2'],
        prop: {name: '张三'}
      }
    }
  }
</script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue之动态注册并渲染组件---kalrry 的相关文章

  • 解决vxe-table复选框翻页选中问题

    解决vxe table复选框翻页选中问题 根据vxe table官方文档 想要保留勾选中的数据 我们的代码中需要设置 row id 和 checkbox config中的 reserve 属性 vxe table官方文档 简单写下html部
  • ip正则表达式

    var Sip rule value callback gt if 2 5 0 5 0 4 d 0 1 d 1 2 2 5 0 5 0 4 d 0 1 d 1 2 3 test value false callback new Error
  • vue父子组件通信方式哪几种

    第一种 props和 emit parent vue
  • Vue与TypeScript的完美结合

    前言 TypeScript 是 JS类型的超集 并支持了泛型 类型 命名空间 枚举等特性 弥补了 JS 在大型应用开发中的不足 在我们自己单独学习 TS时 时常感觉很多知识点还是比较好理解的 但要和框架结合的话 感觉就有点糟 因为我使用Vu
  • ant-design-vue 全局和局部引入组件

    1 全局引入 在main js里面引入 import Vue from vue import ant design vue dist antd css import Antd from ant design vue Vue use Antd
  • Vue-cli3更改项目logo图标

    1 图标切成对应大小 2 图标名称后缀与vue原有图标logo名称 后缀一致 favicon ico 并替换 3 vue项目根目录下 新建 vue config js 添加下列代码 module exports pwa iconPaths
  • Vue出现弹出层时,禁止底部页面跟随滑动

    背景 最近在写一个vue项目 当出现弹出层时 发现底部页面跟随滚动 但是产品不想要这种效果 于是找各种资料 发现很多说法 但是试了试 发现有的根本就不行 比如说有人提出用vue中提供的 touchmove prevent方法来解决 但是我试
  • vue项目使用视频播放器vue-video-player

    安装使用 插件有版本限制 如果项目使用的是vue2 0版本 请选择安装 4 x版本 否则会安装不成功 yarn add vue video palyer save 或者 npm install vue video palyer save 组
  • 滚动条样式

    一 在div中的滚动条样式 div webkit scrollbar width 5px 滚动条宽度 div webkit scrollbar thumb border radius 10px 滚动条圆角 webkit box shadow
  • 大数据毕业设计之前端03:logo、menu的折叠展开实现

    关键字 BuildAdmin pinia logo aside menu 菜单折叠 Vue ElementUI 前言 上一篇文章中 借助aside的实现讲了一些开发的小技巧 以及css的解读 本篇文章主要写一下如何填充aside的内容 as
  • 大事件项目07----10,11,12未录

    1 如果三方jar包对应的对象 2 来自第三方 是无法用 Component及衍生注解生命bean的 3 使用Maven命令 引入jar包 4 这里我们准备了jar包 也提前准备好了jar包的脚本 5 通过本地的方式来安装maven的坐标
  • 黑豹程序员-自定义表单实现门户自定制

    功能 用户可以实现欢迎页面自己定制 数据由数据库表进行维护 原理 页面利用div进行布局 拖动div记录其坐标 并写库 页面加载时从数据库表中读取div坐标和数据即可 效果图
  • Vue学习之watch侦听器:案例实现翻译功能

    watch侦听器 作用 监视数据的变化 当数据发生变化时 执行一些业务逻辑或者是异步操作 执行的场景例如在线翻译 当文本区域的内容发生变化时 会发生翻译内容的同时更新 语法 简单的写法 简单数据类型 可以直接的进行监听 完整的写法 添加额外
  • vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果

    一 实现效果 使用echarts实现省市地图绘制 根据数据在地图显示柱状图 根据数据显示数据 涟漪效果 二 实现方法 1 安装echarts插件 npm install echarts save 2 获取省市json数据 https dat
  • [黑马程序员TypeScript笔记]------一篇就够了

    文章目录 1 TypeScript 介绍 TypeScript 是什么 TypeScript 为什么要为 JS 添加类型支持 TypeScript 相比 JS 的优势 2 TypeScript 初体验 安装编译 TS 的工具包
  • 【vue】$bus 跨组件调用方法

    1 新建bus js import Vue from vue 使用 Event Bus const bus new Vue export default bus 2 main js引用 import bus from libs bus Vu
  • 【vue】$bus 跨组件调用方法

    1 新建bus js import Vue from vue 使用 Event Bus const bus new Vue export default bus 2 main js引用 import bus from libs bus Vu
  • 基于springboot+vue实现位置的多分馆图书馆推荐系统演示【附项目源码+论文说明】

    基于springboot实现位置的多分馆图书馆推荐系统演示 摘要 时代的变化速度实在超出人类的所料 21世纪 计算机已经发展到各行各业 各个地区 它的载体媒介 计算机 大众称之为的电脑 是一种特高速的科学仪器 比人类的脑袋要灵光无数倍 什么
  • 黑豹程序员-字符串中查找出重复的字符串

    Collections frequency codeList element 字符串element 在codeList集合中重复的次数 List
  • ❤ Vue3 使用

    Vue3 使用 Vue3之toRefs的使用 作用 toRefs 可以将一个响应式的对象 转换成普通对象 但是转换后的普通对象的每一个属性值都是响应式的 这样我们可以使用es6的对象解构或者三点运算符等操作 代码

随机推荐

  • 超详细Jetson Xavier NX烧录系统镜像

    一 硬件准备 1 SD卡 xff08 至少32G xff09 和读卡器 xff0c 前者用于转载系统镜像 xff0c 后者用于镜像烧录 2 Jetson Xavier NX开发套件 二 软件准备 1 SDFormatter xff1a 用于
  • python、ros和socket通讯

    项目需要把笔记本的数据发送到小车的ros上 xff0c 我们采用socket通讯的方法 首先把通过socket把笔记本的数据发送到小车上 xff0c 然后通过消息发布和订阅的方式把数据传递到小车的ros上 一 通过socket发送笔记本上的
  • 【YOLOv3 预测】YOLOv3图像输入->处理->输出全过程

    文章目录 1 数据输入输出代码详解2 yolo detect image详解3 感谢链接 1 数据输入输出代码详解 数据输入方式主要包括三种 xff1a 读取本地一张图片 代码中predict状态 读取本地文件夹中所有图片 代码中dir p
  • STM32嵌入式开发常用的协议UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB、SD卡、1-WIRE、Ethernet

    在单片机开发中 xff0c UART I2C RS485等普遍存在 xff0c 对它们的认识可能模棱两可 xff0c 本文它们整理了 UART口通用异步收发器 UART口指的是一种物理接口形式 硬件 UART是异步 xff0c 全双工串口总
  • Autoware学习笔记waypoint_follower之twist_filter

    twis filter launch文件 lt span class token operator span span class token operator span span class token operator span gt
  • 串口概念

    1 xff09 串行接口 1 简称串口 xff08 通常指com接口 xff09 2 特点 xff1a 数据一位一位的顺序传送 通信线路简单 xff0c 只要一对传输线就可以实现双向通信 工作方式有单工 xff0c 半双工 xff0c 全双
  • 无人机UAV与地面站QGC通讯MAVLink协议学习笔记

    目录 写在前面参考学习资源MAVLink消息结构发送消息接收数据 写在前面 最近要学习了解一下Qgroundcontrol中所使用的一些与无人机载体通讯的一些方式 xff0c 所以在这里记录一下学习的过程 参考学习资源 QGroundCon
  • hadoop平台hdfs读取数据过程

    hadoop平台hdfs读取数据过程 xff1a
  • 固定翼调试步骤

    有的时候可能会出现校准不了的情况 xff0c 可以尝试去掉一个罗盘 xff0c 一般去掉的是内置罗盘 xff0c 用外置的罗盘 xff0c 就能够达到要求 将外置的罗盘设置为主罗盘 xff0c 内置罗盘不勾选就可以实现这样的功能 从左右副翼
  • 网络分区是什么?

    网络分区 目前理解 xff0c 在分布式环境下 xff0c 有时由于网络通讯故障 xff0c 而不是服务器上的应用故障 xff0c 导致一些节点认为应用不可用 xff0c 另外一些节点认为应用仍可用 导致 xff0c 整个系统在提供服务时
  • 调试并修理垂起固定翼(VTOL)

    调试 43 修理垂起固定翼 校准遥控器 设置飞行模式 设置的模式的切换是通过通道B来进行的 xff0c 最下面是Guided模式 xff0c 该模式可以运行程序的内容 xff0c 也可以运行写入的航点 中间的模式是QLoiter模式 xff
  • NVIDIA Jetson tx2各性能介绍及切换教程

    1 tx2简介 Jetson tx2 有6个CPU核心和一个GPU NVIDIA命令行工具Nvpmodel提供 xff15 种模式 xff0c 可以方便地让用户配置CPU状态 xff0c 以最大限度地提高不同场景下的性能和能耗 2 五种模式
  • Redis中(error):ERR unknown command ‘KEYS‘, with args beginning with:

    redis报错 ERR unknown command 39 KEYS 39 with args beginning with 1 这种情况是redis服务器不支持keys命令 2 5 0版本改为scan了 2 检查redis的yml配置信
  • 如何用手机控制stm32单片机,通过蓝牙模块

    电脑与单片机通信原理 我们用到的串口调试助手 xff0c 就是通过电脑上面的虚拟串口和单片机的串口进行通信从而来调试 在建立通信的过程中 xff0c 我们需要把电脑上虚拟串口的波特率 xff0c 数据位 xff0c 奇偶校验位 xff0c
  • Vm虚拟机Deepin安装教程---kalrry

    Vm虚拟机Deepin安装教程 kalrry 前言Deepin安装 已完成 前言 Win配置记录 Mac配置记录 Deepin安装 已完成 01 点击创建新的虚拟机 02 选择自定义 高级 点击下一步 N 03 点击下一步 N 04 选择稍
  • 国内外流行的JS游戏开发框架介绍---kalrry

    国内外流行的JS游戏开发框架介绍 kalrry 前言一 整理中ing二 当今国内外流行的游戏开发框架有哪些 三 每个框架的特点以及优缺点1 Three js优点 xff1a 缺点 xff1a 2 Phaser优点 xff1a 缺点 xff1
  • JavaScript库集合---kalrry---ing

    JavaScript库集合 kalrry ing 参考 序号JS库功能备注01web3 jsweb3 js 库是一系列模块的集合 xff0c 服务于以太坊生态系统的各个功能备用链接02Three js03Ramda04Lodash05Mom
  • CPU天梯图/显卡天梯图---kalrry

    CPU天梯图 显卡天梯图 kalrry 一 CPU天梯图二 显卡天梯图 一 CPU天梯图 CPU天梯图更注重综合性能 xff0c 只具有参考意义 二 显卡天梯图 以下显卡天梯图主要是根据传统光栅性能排名
  • Pixhawk飞控资料备忘---kalrry

    Pixhawk飞控资料备忘 kalrry 一 简介二 工具 资料1 Mission Planner2 PX4 需全局跳转 3 Pixhawk官网4 视频资源 三 开发入门四 待分类 一 简介 PX4飞控软件是来自苏黎世大学的PIXHAWK项
  • vue之动态注册并渲染组件---kalrry

    vue之动态注册并渲染组件 kalrry 简介 xff1a 目录结构一 普通方法二 方案二三 方案三四 方案四 简介 xff1a 目录结构 待完善补充 index vue dir 目录文件夹 comp1 vue comp2 vue 一 普通