首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【愚公系列】《循序渐进Vue.js 3.x前端开发实践》024-动态组件

【愚公系列】《循序渐进Vue.js 3.x前端开发实践》024-动态组件

原创
作者头像
愚公搬代码
发布2025-07-06 08:52:09
发布2025-07-06 08:52:09
14600
代码可运行
举报
运行总次数:0
代码可运行

标题

详情

作者简介

愚公搬代码

头衔

华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。

近期荣誉

2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳博主等。

博客内容

.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。

欢迎

👍点赞、✍评论、⭐收藏

🚀前言

在现代前端开发中,组件化设计已经成为构建复杂用户界面的核心理念。而在 Vue.js 框架中,动态组件的概念为我们提供了更高的灵活性和可重用性,使得应用的开发和维护变得更加高效。动态组件允许开发者根据应用状态或用户交互,实时切换不同的组件,从而提升用户体验和应用性能。

本篇文章将深入探讨 Vue 中的动态组件,帮助你理解如何在实际项目中灵活运用这一特性。我们将从动态组件的基本概念入手,详细介绍如何使用 <component> 标签和 v-bind:is 指令来实现组件的动态切换。此外,我们还将讨论动态组件的生命周期以及过渡效果,展示如何为用户提供流畅的视觉体验。

🚀一、动态组件

🔎1.HTML 结构部分

代码语言:html
复制
<!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>Vue动态组件</title>
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
</head>
<body>
    <div id="Application">
        <input type="radio" value="page1" v-model="page"/>页面1
        <input type="radio" value="page2" v-model="page"/>页面2
        <component :is="page"></component>
    </div>
    <script>
        ...
    </script>
</body>
</html>
在这里插入图片描述
在这里插入图片描述

🦋1.1 功能说明

  • <input type="radio" v-model="page"/>:定义了两个单选按钮,v-model="page" 用来绑定 page 变量,用户选择不同的单选按钮时,page 的值会改变。page 的值可以是 "page1""page2",对应着页面组件1和页面组件2。
  • <component :is="page"></component>:Vue 的动态组件语法。通过 :is 指令,component 标签将根据 page 的值动态切换成 page1page2 组件。也就是说,当 page 的值为 "page1" 时,<component> 会渲染 page1 组件;当 page 的值为 "page2" 时,渲染 page2 组件。

🔎2.JavaScript 部分解析

代码语言:javascript
代码运行次数:0
运行
复制
const { createApp, ref } = Vue;
const App = createApp({
    setup() {
        const page = ref("page1"); // 默认展示 page1
        return { page };
    }
});

🦋2.1 说明

  • createApp:用于创建 Vue 应用实例。这个实例的根组件使用了 setup 函数来进行逻辑处理。
  • ref("page1"):在 Vue 3 中,ref 用于定义响应式数据。这里 page 是一个响应式变量,初始值为 "page1",表示默认显示 page1 组件。
  • setup:Vue 3 中 Composition API 的一部分,setup 函数在组件创建时调用,返回的对象会成为模板中可用的数据。这里返回了 page 变量,使其可以在模板中绑定。

🔎3.定义 page1page2 组件

代码语言:javascript
代码运行次数:0
运行
复制
const page1 = {
    template: `<div style="color:red">页面组件1</div>`
};
const page2 = {
    template: `<div style="color:blue">页面组件2</div>`
};

🦋3.1 说明

  • page1page2 是两个简单的 Vue 组件,它们分别展示不同的内容和样式。
    • page1 组件的模板包含一个红色的文本,内容是 "页面组件1"。
    • page2 组件的模板包含一个蓝色的文本,内容是 "页面组件2"。
  • 这些组件是通过 App.component 注册的,确保它们在 Vue 应用中可用。

🔎4.组件注册和挂载

代码语言:javascript
代码运行次数:0
运行
复制
App.component("page1", page1);
App.component("page2", page2);
App.mount("#Application");

🦋4.1 说明

  • App.component("page1", page1)App.component("page2", page2):将 page1page2 组件注册为全局组件,这样在模板中可以通过 <page1><page2> 来使用它们。
  • App.mount("#Application"):将 Vue 应用挂载到 id="Application" 的 DOM 元素上,启动 Vue 实例。

🔎5.逻辑总结

  1. 动态组件:
    • 通过 :is="page"component 标签能够根据 page 的值动态渲染不同的组件。
    • page 的初始值是 "page1",所以页面默认渲染 page1 组件。
    • 用户通过单选按钮选择不同的页面(page1page2),page 的值会发生变化,Vue 会根据新的 page 值重新渲染相应的组件。
  2. 响应式数据:
    • page 变量是响应式的,绑定在单选按钮的 v-model 上。当用户选择不同的按钮时,page 的值会发生改变。Vue 会自动追踪这个变化并更新 DOM。
  3. 组件切换:
    • 使用 component :is="page" 的语法,可以根据动态的数据渲染不同的组件。page1page2 组件的切换是通过 page 的值来控制的。
    • 这种方式使得组件的展示可以非常灵活,可以通过不同的条件动态加载不同的内容。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀前言
  • 🚀一、动态组件
    • 🔎1.HTML 结构部分
      • 🦋1.1 功能说明
    • 🔎2.JavaScript 部分解析
      • 🦋2.1 说明
    • 🔎3.定义 page1 和 page2 组件
      • 🦋3.1 说明
    • 🔎4.组件注册和挂载
      • 🦋4.1 说明
    • 🔎5.逻辑总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档