vue组件的动态加载

news2025/2/23 19:07:04

​ 平常的vue项目开发,已经很难遇见一千行,甚至几千行代码的页面了,毕竟大家都会去拆分组件。但如果一个页面需要通过十几个组件或者几十个组件中的某几个组件去排列组合渲染,此时用动态加载就很有必要了。

​ 我自己在开发过程中,有遇到审核流的开发。审核的业务不同导致会有7,8种业务类型,而每种不同的业务类型下又有几种不同的工作流,从而会有几十种不同的工作流审批。每个工作流除了基础信息模块展示一样外,还有自己独有的信息展示模块,这样开发时咱们可能一不小心就引入加载了十几,二十个组件。这样我就想为何不去运用动态加载组件来实现呢?

​ 当然公司项目不太方便展示,自己来写一下demo体现一个动态加载的作用吧!

<template>
  <div>
    <a />
    <el-tabs
      v-model="activeName"
      type="card"
      class="demo-tabs"
      @tab-click="handleClick"
    >
      <el-tab-pane v-for="item in tabConfig" :key="item.id" :label="item.label" :name="item.id">
        <component :is="item.cName" v-if="activeName == item.id" />
      </el-tab-pane>
    </el-tabs>
  </div>
</template>
<script>
import a from './components/a.vue'
import b from './components/b.vue'
export default {
    data() {
        return {
            tabConfig:[
                {
                    label:'账号信息',
                    id: 0,
                    cName:a
                },
                {
                    label:'个人信息',
                    id: 1,
                    cName:b
                }
            ],
            activeName:0
        }
    }
}
</script>

在这里插入图片描述

可以看到页面一次性加载了两个子组件,下面来看看动态加载后的效果吧!

先上代码

<template>
  <div>
    <el-tabs
      v-model="activeName"
      type="card"
      class="demo-tabs"
      @tab-click="handleClick"
    >
      <el-tab-pane v-for="item in tabConfig" :key="item.id" :label="item.label" :name="item.id">
        <component :is="item.cName" v-if="activeName == item.id" />
      </el-tab-pane>
    </el-tabs>
  </div>
</template>
<script lang='ts' setup>
import { ref, defineAsyncComponent } from 'vue'
    const tabConfig = [
        {
            label:'账号信息',
            id: 0,
            cName:defineAsyncComponent(() => import('./components/a.vue'))
        },
        {
            label:'个人信息',![动态渲染2](C:\Users\WS\Desktop\截图\动态渲染2.png)
            id: 1,
            cName:defineAsyncComponent(() => import('./components/b.vue'))
        }
    ]
    console.log(tabConfig[0].cName,'ppp');
    
    let activeName = ref(0)
    const handleClick = function () {

    }
</script>
<style>
.el-tab-pane {
    height: 100px;
}
</style>

在这里插入图片描述
在这里插入图片描述

​ 可以看到动态加载在初次只加载了需要用到a组件,点击切换tab才会加载b组件。那么在审核流的场景中,一次加载十几个组件,但实际上条件渲染到页面只需要四五个组件。那么用动态加载的方法就很合理了,不用的不加载,极大的节约网络请求的资源。

​ 如果有感觉到非常眼熟的话,其实vue-router中早就使用了,路由的懒加载就是同理实现的。

{
        path: '/404',
        name: '/404',
        component: () => import('@/views/404.vue'),
        meta: {
            title: '页面404',
        },
        hidden: true,
    },```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405931.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

v-if与v-for为什么不建议一起使用?

1、作用 v-if指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回true值的时候被渲染。 v-for指令基于一个数组来渲染一个列表。v-for指令需要使用item in items 形式的特殊语法&#xff0c;其中items是源数据数组或者对象&#xff0c;而item则是被迭代的数组元素的…

JS-获取DOM元素的五种方法

介绍 本文主要介绍通过JS获取DOM元素的5种方法&#xff1a; 根据id名获取元素&#xff1a;getElementById;根据标签名获取元素&#xff1a;getElementsByTagName&#xff0c;返回一个数组&#xff1b;根据类名获取元素&#xff1a;getElementsByClassName&#xff0c;返回一个…

当后端给我返回了302状态码

本文首发于&#xff1a;https://github.com/bigo-frontend/blog/ 欢迎关注、转载。 前言 前段时间接手了一个项目&#xff0c;在代码中看到了这样的一段代码&#xff1a; if (isHTML(data) &&response.request.responseURL?.indexOf(CAS_PREFIX) > -1) {window.l…

cesium简介

文章目录1.什么是Cesium&#xff1f;2.Cesium能做什么&#xff1f;3.Cesium的依赖性4.Cesium学习参考Cesium实战系列文章总目录&#xff1a; 传送门1.什么是Cesium&#xff1f; Cesium是AGI公司计算机图形开发小组与2011年研发的三维地球和地图可视化开源JavaScript库&#xf…

【微信小程序 | 实战开发】实现ES6转ES5开关

个人名片: 🐼作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:🖼️ 零基础学Java——小白入门必备重识C语言——复习回顾

Java开发框架选型对比:ruoyi与yudao框架

1、基础开发框架 1.1 什么是基础开发框架&#xff1f; 基础框架可以理解为建立一个项目所需的基础框架&#xff0c;这个基础框架为凝聚了之前开发项目的通用、共性的方法、工具、技术等组成的代码包。 现有我们公司有两类基础框架&#xff1a;&#xff08;1&#xff09;基于w…

vue2使用element UI中Descriptions组件的遍历问题

需求描述&#xff1a;展示信息时其中部门区域是未知数量的&#xff0c;需要通过遍历进行展示。如下图举例&#xff0c;其中地址和备注是一一对应关系&#xff0c;需遵循该样式。 问题描述&#xff1a;起初我在el-descriptions中直接使用v-for进行遍历地址和备注两个el-descript…

实现异步的8种方式

前言异步执行对于开发者来说并不陌生&#xff0c;在实际的开发过程中&#xff0c;很多场景多会使用到异步&#xff0c;相比同步执行&#xff0c;异步可以大大缩短请求链路耗时时间&#xff0c;比如&#xff1a;「发送短信、邮件、异步更新等」&#xff0c;这些都是典型的可以通…

Switch语句用法及案例

​ 一、Switch语句用法 switch是多分支语句&#xff0c;用于判断一个表达式的值&#xff0c;然后执行相应的语句。&#xff08;可以实现多选一&#xff09; switch语句执行思路&#xff1a;利用表达式的值&#xff0c;来判断执行哪个语句。&#xff08;简单的来说就是利用我们…

Vue 3 安装及环境配置

Vue 3 安装及环境配置1、安装 Node.js2、配置默认安装目录和缓存日志目录3、配置环境变量4、配置淘宝镜像5、安装 vue 和脚手架6、安装vue-cli 3.x7、创建 vue 3 项目8、可能遇到的问题1、安装 Node.js Node.js 官网&#xff1a;https://nodejs.org/en/download 安装成功后在…

Vue项目实战——实现一个任务清单【基于 Vue3.x 全家桶(简易版)】

Vue3.x 项目实战&#xff08;一&#xff09; 内容参考链接Vue2.x全家桶Vue2.x 全家桶参考链接Vue2.x项目&#xff08;一&#xff09;Vue2.x 实现一个任务清单Vue2.x项目&#xff08;二&#xff09;Vue2.x 实现GitHub搜索案例Vue3.x项目&#xff08;三&#xff09;Vue3.x 实现一…

Vue项目部署(Nginx)

本文记录如何将做好的Vue项目部署到服务器上&#xff0c;需要准备&#xff1a; linux系统的服务器或者虚拟机Vue项目打包Nginx服务器的配置和部署1、linux系统准备 本次使用云主机作为部署主机。 2、Vue项目打包 切换到项目所在目录&#xff0c;使用 npm run build 命令完成项目…

深度学习——VGG16模型详解

1、网络结构 VGG16模型很好的适用于分类和定位任务&#xff0c;其名称来自牛津大学几何组&#xff08;Visual Geometry Group&#xff09;的缩写。 根据卷积核的大小核卷积层数&#xff0c;VGG共有6种配置&#xff0c;分别为A、A-LRN、B、C、D、E&#xff0c;其中D和E两种是最…

yolov5源码解析(9)--输出

本文章基于yolov5-6.2版本。主要讲解的是yolov5是怎么在最终的特征图上得出物体边框、置信度、物体分类的。 一。总体框架 首先贴出总体框架&#xff0c;直接就拿官方文档的图了&#xff0c;本文就是接着右侧的那三层输出开始讨论。 Backbone: New CSP-Darknet53Neck: SPPF, …

JavaWeb酒店管理系统

酒店管理系统 一、项目介绍 1、项目用到的技术栈 开发工具&#xff1a;idea语言&#xff1a;java、js、htmlajax数据库&#xff1a;MySQL服务器&#xff1a;Tomcat框架&#xff1a;mybatis、jQuery 2、项目实现功能 管理员和用户登录和退出功能以及用户注册功能&#xf…

【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)

文章目录写在前面HBuilderXHBuilderX 优势HBuilderX 安装uni-app 初体验写在最后写在前面 聚沙成塔——每天进步一点点&#xff0c;大家好我是几何心凉&#xff0c;不难发现越来越多的前端招聘JD中都加入了uni-app 这一项&#xff0c;它也已经成为前端开发者不可或缺的一项技能…

Eolink 治愈了后端开发者的痛

一、前后端的爱恨情仇 最近公司的一个前端同事和一个后端同事吵了一架&#xff0c;事情大概是这样的。后端说要联调接口&#xff0c;前端说你的数据尽量按我的要求来&#xff0c;后端不干&#xff0c;说你这个没用。前端就讲道理呀&#xff0c;传统的前后端分离返回的格式要尽…

【node进阶】深入浅出websocket即时通讯(二)-实现简易的群聊私聊

✅ 作者简介&#xff1a;一名普通本科大三的学生&#xff0c;致力于提高前端开发能力 ✨ 个人主页&#xff1a;前端小白在前进的主页 &#x1f525; 系列专栏 &#xff1a; node.js学习专栏 ⭐️ 个人社区 : 个人交流社区 &#x1f340; 学习格言: ☀️ 打不倒你的会使你更强&a…

保姆级教程:Ant Design Vue中 a-table 嵌套子表格

前端为Ant Design Vue 版本为1.6.2&#xff0c;使用的是vue2 Ant Design Vue中 a-table 嵌套子表格&#xff0c;说的可能稍微墨迹了点&#xff0c;不过重点内容都说的比较详细&#xff0c;利于新人理解&#xff0c;高手可以自取完整代码 内容概述&#xff1a;完成样式及完整代…

在收到消息后秒级使网站变灰,不改代码不上线,如何实现?

注意&#xff1a;文本不是讲如何将网站置灰的那个技术点&#xff0c;那个技术点之前汶川地震的时候说过。 本文不讲如何实现技术&#xff0c;而是讲如何在第一时间知道消息后&#xff0c;更快速的实现这个置灰需求的上线。 实现需求不是乐趣&#xff0c;指挥别人去实现需求才…