【愚公系列】《循序渐进Vue.js 3.x前端开发实践》024-动态组件
【摘要】 标题详情作者简介愚公搬代码头衔华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。近期荣誉2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主,2024年华为云十佳...
标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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 结构部分
<!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
的值动态切换成page1
或page2
组件。也就是说,当page
的值为"page1"
时,<component>
会渲染page1
组件;当page
的值为"page2"
时,渲染page2
组件。
🔎2.JavaScript 部分解析
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.定义 page1
和 page2
组件
const page1 = {
template: `<div style="color:red">页面组件1</div>`
};
const page2 = {
template: `<div style="color:blue">页面组件2</div>`
};
🦋3.1 说明
page1
和page2
是两个简单的 Vue 组件,它们分别展示不同的内容和样式。page1
组件的模板包含一个红色的文本,内容是 “页面组件1”。page2
组件的模板包含一个蓝色的文本,内容是 “页面组件2”。
- 这些组件是通过
App.component
注册的,确保它们在 Vue 应用中可用。
🔎4.组件注册和挂载
App.component("page1", page1);
App.component("page2", page2);
App.mount("#Application");
🦋4.1 说明
App.component("page1", page1)
和App.component("page2", page2)
:将page1
和page2
组件注册为全局组件,这样在模板中可以通过<page1>
和<page2>
来使用它们。App.mount("#Application")
:将 Vue 应用挂载到id="Application"
的 DOM 元素上,启动 Vue 实例。
🔎5.逻辑总结
-
动态组件:
- 通过
:is="page"
,component
标签能够根据page
的值动态渲染不同的组件。 page
的初始值是"page1"
,所以页面默认渲染page1
组件。- 用户通过单选按钮选择不同的页面(
page1
或page2
),page
的值会发生变化,Vue 会根据新的page
值重新渲染相应的组件。
- 通过
-
响应式数据:
page
变量是响应式的,绑定在单选按钮的v-model
上。当用户选择不同的按钮时,page
的值会发生改变。Vue 会自动追踪这个变化并更新 DOM。
-
组件切换:
- 使用
component :is="page"
的语法,可以根据动态的数据渲染不同的组件。page1
和page2
组件的切换是通过page
的值来控制的。 - 这种方式使得组件的展示可以非常灵活,可以通过不同的条件动态加载不同的内容。
- 使用
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)