广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue动态组件与异步组件超详细讲解
  • 854
分享到

Vue动态组件与异步组件超详细讲解

Vue动态组件与异步组件Vue动态组件Vue异步组件 2023-03-19 17:03:26 854人浏览 安东尼
摘要

目录何为动态组件何为异步组件示例解析动态组件异步组件总结何为动态组件 动态组件是根据数据的变化,可以随时切换不同的组件,比如咱们现在要展示一个文本框和输入框,我们想要根据我们data

何为动态组件

动态组件是根据数据的变化,可以随时切换不同的组件,比如咱们现在要展示一个文本框和输入框,我们想要根据我们data中定义的值去决定是显示文本框还是输入框,如果用以前学的知识去做的话就是使用v-show的方式去做,虽然也能实现,但是比较复杂,代码也多了很多,这时候用动态组件能很好的解决这个问题

何为异步组件

异步组件可以以异步的方式加载组件,实际项目中我们可以把大型的项目拆分成许多小js文件,等使用时再组合,而且可以实现懒加载,有些组件暂时不需要展示给用户的我们可以等用户看到时再加载进来。

示例解析

动态组件

展示一个输入框或者文本,通过一个按钮,点击后可以切换展示,比如当前展示文本,点击按钮就会变为展示输入框,代码如下:

首先我们先定义两个组件,一个展示输入框,一个展示文本

  app.component('input-item',{
        template:`
            <input />
           `
    });
    app.component('common-item',{
        template:`<div>hello world</div>`
    });

定义一个currentItem变量用于控制组件的展示

data() {
        return {
            currentItem: 'input-item'
        }
    },

使用组件时使用component关键字 ,然后使用:is = "显示具体组件的依赖数据(本例子中时currentItem)"的方式动态加载组件

  template: 
        `
        <keep-alive>
        <component :is="currentItem"/>
        </keep-alive>
        <button @click="handleClick">switch</button>
        `

keep-alive:组件切换时在组件中的值会被清掉,比如输入框中的值,所以需要使用keep-alive来防止值被清理

定义点击按钮后执行的方法,这个方法就是改变current Item的值,让其显示不同的组件

 methods: {
        handleClick(){
            if(this.currentItem === 'input-item'){
                this.currentItem = 'common-item';
            }else{
                this.currentItem = 'input-item';
            }
        }
    }

所有代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta Http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>动态组件</title>
    <script src="https://unpkg.com/Vue@next"></script>
</head>
<body>
    <div id="root"></div>
</body>
<script>
 const app = Vue.createApp({
    data() {
        return {
            currentItem: 'input-item'
        }
    },
    methods: {
        handleClick(){
            if(this.currentItem === 'input-item'){
                this.currentItem = 'common-item';
            }else{
                this.currentItem = 'input-item';
            }
        }
    },
        template: 
        `
        <keep-alive>
        <component :is="currentItem"/>
        </keep-alive>
        <button @click="handleClick">switch</button>
        `
    });
    app.component('input-item',{
        template:`
            <input />
           `
    });
    app.component('common-item',{
        template:`<div>hello world</div>`
    });
    const vm = app.mount('#root');
</script>
</html>

异步组件

假如我们要展示一个文本,这个文本不会马上展示,而是4秒后再展示

首先定义两个组件,一个同步组件,一个异步组件

定义同步组件

 app.component('common-item',{
        template:`<div>hello world</div>`
    })

定义异步组件,使用Vue.defineAsyncComponent定义异步组件

 app.component('async-common-item',
 Vue.defineAsyncComponent(()=>{
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve({
                    template:`<div>this is an async component</div>`
                })
            },4000)  
        })
    }));

使用组件

 const app = Vue.createApp({
        template: 
        `
        <div>
            <common-item />
            <async-common-item />
        </div>
        `
    });

全部代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>异步组件</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="root"></div>
</body>
<script>
 const app = Vue.createApp({
        template: 
        `
        <div>
            <common-item />
            <async-common-item />
        </div>
        `
    });
    app.component('common-item',{
        template:`<div>hello world</div>`
    })
    // 异步组件:可以通过异步组件的方式动态加载组件,可以把大型项目拆分成许多的小js 文件,使用时再组合
    app.component('async-common-item',
        Vue.defineAsyncComponent(()=>{
        return new Promise((resolve,reject)=>{
            setTimeout(()=>{
                resolve({
                    template:`<div>this is an async component</div>`
                })
            },4000)        
        })
    }));
    const vm = app.mount('#root');
</script>
</html>

总结

本文主要是简单介绍了动态组件和异步组件的定义及使用的方法,动态组件是可以让我们使用者通过一定的条件决定展示哪个组件,而异步组件可以让我们实现组件懒加载的功能,使大型项目可以拆成许多小js文件,使用时再组合,非常方便

到此这篇关于Vue动态组件与异步组件超详细讲解的文章就介绍到这了,更多相关Vue动态组件与异步组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue动态组件与异步组件超详细讲解

本文链接: https://www.lsjlt.com/news/200051.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue动态组件与异步组件超详细讲解
    目录何为动态组件何为异步组件示例解析动态组件异步组件总结何为动态组件 动态组件是根据数据的变化,可以随时切换不同的组件,比如咱们现在要展示一个文本框和输入框,我们想要根据我们data...
    99+
    2023-03-19
    Vue动态组件与异步组件 Vue动态组件 Vue异步组件
  • VUE组件传参超详细讲解
    目录Vue.cli 中怎样使用自定义的组件Vue 组件如何进行传值的父组件向子组件传递数据子组件向父组件传递数据非父子组件之间传递数据父传子例子子传父例子Vue组件data为什么必须...
    99+
    2022-11-13
  • Vue浅析讲解动态组件与缓存组件及异步组件的使用
    目录1.什么是动态组件2.如何实现动态组件渲染3.如何实现缓存组件4.异步组件1.什么是动态组件 当我们希望页面中的某个地方,在不同组件之间进行动态切换,这时候除了条件渲染,还可以使...
    99+
    2022-11-13
  • Jetpacknavigation组件超详细讲解
    目录依赖项创建导航图导航宿主导航到目的地传递参数NavigationUI多模块导航导航是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件...
    99+
    2022-11-13
    Jetpack navigation Jetpack navigation组件 Android navigation
  • Vue动态组件与内置组件浅析讲解
    目录一、动态组件二、内置组件一、动态组件 在vue中,有很多的组件可以挂载同一个挂载点上面,要在同一个挂载的点上的多个组件之间可以实现动态的切换渲染,我们可以通过内置组件compon...
    99+
    2022-11-13
  • Vue动态组件与异步组件怎么使用
    这篇“Vue动态组件与异步组件怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue动态组件与异步组件怎么使用”文章吧...
    99+
    2023-07-05
  • Vue组件与Vuecli脚手架安装方法超详细讲解
    目录计算属性监听属性组件介绍和定义父子通信父传子子传父ref属性动态组件插槽vue-cli计算属性 计算属性关键字:computed 每次页面刷新都会重新加载数据,而我们有时候退出页...
    99+
    2022-11-13
    Vue组件 Vue cli脚手架
  • Vue组件与生命周期详细讲解
    目录写在前面生命周期图解总结写在前面 Vue.js的核心就是以简洁的模板语法将数据渲染进Dom系统。vue实例在渲染成html的时候往往要经过以下的步骤: 读取数据和方法,设置数据绑...
    99+
    2022-11-13
    Vue组件 Vue生命周期
  • VUE3+vite项目中动态引入组件与异步组件的详细实例
    目录一、全量注册,随用随取1. 把项目中所有vue文件注册成异步组件。2. 获取组件3. 参考如下二、使用@rollup/plugin-dynamic-import-vars插件 1...
    99+
    2022-11-13
  • Vue子组件与父组件详细解析
    目录一、父组件和子组件二、模板分离写法1、template标签2、text/x-template三、父子组件通信-父传子1、Prop 类型四、父子组件通信子传父1、vm.$emit(...
    99+
    2022-11-12
  • Android超详细讲解组件AdapterView的使用
    目录概述 介绍AdapterView的编程模式 Adapter ListView使用myAdapater.javaMainActivity.javamy...
    99+
    2022-11-13
  • Android超详细讲解组件ScrollView的使用
    目录概述练习HorizontalScrollView:概述     ScrollView也是一个容器,它是FrameLayout的子类,它的主要作用就是将超出物理...
    99+
    2022-11-13
  • Android超详细讲解组件LinearLayout的使用
    目录概述常用XML配置属性(1) android:orientation(2) android:gravity(3) View中继承来的属性代码举例概述 LinearLay...
    99+
    2022-11-13
  • Vue组件开发之异步组件详解
    目录一、引入二、vue中的异步组件三、异步组件和suspense总结一、引入 我们在讲异步组件之前,我们再来回顾一下webpack打包时的分包操作。我们可以使用import()异步加...
    99+
    2022-11-13
  • vue components 动态组件详解
    目录总结总结数组发生变化时,动态加载相应数据 场景:点击不同组件名称,界面显示相应组件 步骤一:导入所需组件 步骤二:点击 tab 选项卡,将对应组件名添加进数组 步骤三:使用动态组...
    99+
    2022-11-12
  • Vue组件的渲染流程详细讲解
    目录引言与例子举一个工作中能用到的例子:实现extend执行流程1. 注册流程(以Vue.component()祖册为例子):2. 执行流程3. 渲染流程总结注: 本文目的是通过源码...
    99+
    2022-11-13
  • SpringBoot嵌入式Servlet容器与定制化组件超详细讲解
    目录嵌入式Servlet容器1、原理分析2、Servlet容器切换3、定制Servlet容器配置定制化组件嵌入式Servlet容器 在Spring Boot中,默认支持的web容器有...
    99+
    2022-11-13
  • Vue动态组件和keep-alive组件实例详解
    目录动态组件格式注意点使用效果目录结构操作效果小结keep-alive组件使用背景解决方法使用keep-alive组件小结keep-alive组件-指定缓存语法注意:总结动态组件 多...
    99+
    2022-11-13
  • Vue3兄弟组件传值之mitt的超详细讲解
    目录前言比起 Vue 实例上的 EventBus,mitt.js 好在哪里呢?项目中安装mitt使用方式一:在原型中声明使用方式二:在组件中引用总结前言 Vue2.x 使用 ...
    99+
    2022-11-13
  • SpringCloud超详细讲解负载均衡组件Ribbon源码
    目录前言项目实战创建项目启动项目验证源码分析选择服务地址替换总结前言 上一篇文章中我们通过自己开发了一个负载均衡组件,实现了随机算法的负载均衡功能,如果要实现其他算法,还需要修改代码...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作