当前位置: 首页 > news >正文

组件的注册和引用

在Vue中,开发者可以将页面中独立的、可重用的部分封装成组件,对组件的结构,样式和行为进行设置。组件是 Vue 的基本结构单元,组件之间可以相互引用。


一.注册组件

当在Vue项目中定义了一个新的组件后,要想在其他组件中引用这个新的组件,需要对新的组件进行注册。在注册组件的时候,需要给组件取一个名字,从而区分每个组件,可以采用帕斯卡命名法(PascalCase)为组件命名。

Vue 提供了两种注册组件的方式,分别是全局注册和局部注册。接下来对这两种注册组件的方式分别进行讲解。


1.全局注册

           在实际开发中,如果某个组件的使用频率很高,许多组件中都会引用该组件,则推荐将该组件全局注册。被全局注册的组件可以在当前Vue项目的任何一个组件内引用。

            在 Vue 项目的 src\main.js 文件中,通过 Vue 应用实例的 component()方法可以全局注册组件,该方法的语法格式如下。

component('组件名称',需要被注册的组件)

        上述语法格式中,component()方法接收两个参数,第1个参数为组件名称,注册完成后即可全局使用该组件名称,第2个参数为需要被注册的组件。

        例如,在 src\main.js 文件中注册一个全局组件 MyComponent,示例代码如下。

import {createApp )from 'vue';
import'./style.css'
import App from'./app.vue' const app =createApp(App)import MyComponent from './components/MyComponent.vue'app.component('MyComponent',MyComponent)app.mount('#app')

        在上述代码中,第4行代码用于导入 MyComponent 组件;第5行代码用于创建Vue应用用实例;第6行代码用于将MyComponent组件注册为全局组件。

        component()方法支持链式调用,可以连续注册多个组件,示例代码如下。

app.component('ComponentA', ComponentA)
.component ('ComponentB', ComponentB)
.component('ComponentC',ComponentC)

2.局部注册

        在实际开发中,如果某些组件只在特定的情况下被用到,推荐进行局部注册。局部注册即在某个组件中注册、被局部注册的组件只能在当前注册范围内使用。例如,在组件A中注册了组件B,则组件B只能在组件A中使用,不能在组件C中使用。

        局部注册组件的示例代码如下。

<soript>
import ComponentA from './ComponentA.vue'
export default{
components:{ ComponentA:ComponentA}
}</script>

        在上述代码中,第4行代码用于将 ComponentA 组件局部注册到当前组件中。其中,冒号前面的ComponenA 是局部注册的组件名称,冒号后面的ComponentA 是组件本身。由于冒号前后代码相同,所以可以将(ComponentA:ComponentA }简写为{ComponentA}。

        在使用 setup语法糖时,导人的组件会被自动注册,无须手动注册,导入后可以直接在模板中使用,示例代码如下。

<script setup>import ComponentA from'./ComponentA.vue'</script>

        上述代码完成了 ComponentA 组件的导入和注册。


二.引用组件

        将组件注册完成后,若要将组件在页面中渲染出来,需要引用组件。默认情况下,Vue项目中有一个根组件,根组件可以引用其他组件,引用后会形成父子关系--根组件是父组件,被引用的组件是子组件。在子组件中也可以引用其他组件。

        在组件的<template>标签中可以引用其他组件,被引用的组件需要写成标签的形式,标签名应与组件名对应。组件的标签名可以使用短横线分隔或帕斯卡命名法命名。例如,<my-component>标签和<MyComponent>标签都表示引用 MyComponent 组件。一个组件可以被引用多次,但不可出现自我引用和互相引用的情况,否则会出现死循环。

        接下来通过实际操作的方式演示组件的使用方法,具体步骤如下。

① 创建 src\components\ComponentUse.vue 文件,具体代码如下。

<template>
<h5>父组件</h5>
<div class="box">
</div></template><style>.box{display: flex;}
</style>

        在上述代码中,第3~4行代码定义了 div 元素,该 div元素将作为被引用组件的容器:第7~9行代码用于将 div 元素设置为弹性盒子。

② 修改 sre\main.js文件,切换页面中显示的组件,具体代码如下。

 <template>
<div class="global-container">
<h5>全局组件</h5>
</template>
</div><style>
.global-container{
border: lpx solid black;
height: 50px;
flex: 1;
}
</style>

        在上述代码中,第1~5行代码通过<template>标签定义 GlobalComponent 组件的模板:第6~12 行代码通过<style>标签定义 GlobalComponent 组件的样式。

④ 创建 src\components\LocalComponent.vue 文件,表示局部组件,具体代码如下。

<template>
<div class="local-container">
<h5>局部组件</h5>
</div></template><style>
.local-container {
border: 1px dashed black;height: 50px;flex:1;}
</style>

        在上述代码中,第1~5 行代码通过<template>标签定义 LocalComponent 组件的模板第6~12 行代码通过<style>标签定义 LocalComponent 组件的样式。

⑤ 修改 src\main.js 文件,导人 GlobalComponent组件并调用 component( )方法全局注册ClobalComponent组件,具体代码如下。

import { createApp }from 'vue'
import './style.css'
import App from'./components/ComponentUse.vue'
import GlobalComponent from'./components/GlobalComponent .vue'
const app =createApp(App)
app.component('GlobalComponent', GlobalComponent)
app.mount('#app')

        在上述代码中,第4行代码通过 impont 语法导入 GlobalComponent 组件;第6行代码过调用 component()方法全局注册 GlobalComponent 组件。

⑥ 修改 srekcomponents\ComponentUse.vue 文件,添加代码导人 LocalComponent 组件具体代码如下。

 <script setup>
import LocalComponent from'./LocalComponent .vue'</script>

        ⑦ 修改 srckcomponents\CcomponenUse.vue 文件,在class为 box的<div>标签中引用GlobalComponent 组件和 LocalComponent 组件,具体代码如下。

<div class="box">
<GlobalComponent />
<LocalComponent/>
</div>

        在上述代码中,第2行和第3行代码分别在ComponentUse 组件中以标签的形式引用了GlobalComponent 组件和 LocalComponent 组件。

        保存上述代码后,在浏览器中访问 http://127.0.0.1:51731,引|用组件后的页面效果如图所示。

         从图可以看出,在ComponentUse 组件中成功引用了 GlobalComponent 组件和LocalComponent组件,页面中显示了GlobalComponent组件和 LocalComponent 组件的内容。


感谢大家的阅读,如有不对的地方,可以私信我,感谢大家!

相关文章:

组件的注册和引用

在Vue中&#xff0c;开发者可以将页面中独立的、可重用的部分封装成组件&#xff0c;对组件的结构&#xff0c;样式和行为进行设置。组件是 Vue 的基本结构单元&#xff0c;组件之间可以相互引用。 一.注册组件 当在Vue项目中定义了一个新的组件后&#xff0c;要想在其他组件中…...

诊所如何赢得患者?做好这两点很关键!

大家都知道&#xff0c;社区周边的诊所原本是居民看病的第一选择&#xff0c;方便又快捷。但现在很多诊所服务都差不多&#xff0c;没有自己的特色&#xff0c;这就让患者有点难选择了。那诊所怎么做才能更吸引患者呢&#xff1f;其实&#xff0c;关键是要抓住患者的心&#xf…...

Qwen2本地部署的实战教程

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

html+CSS+js部分基础运用15

1、完成输入框内容的实时反向输出。 2、银行账户余额变动自动通知项目。 设计要求&#xff1a;单击按钮后&#xff0c;余额按照输入框的数额减少&#xff0c;同时将按钮式的提示信息&#xff08;金额&#xff09;同步改变。利用侦听属性实现余额发生变化时发出提示信息&#x…...

从零开始学JAVA

一、编写Hello world程序 public class JavaMain1 {//主程序执行入口&#xff0c;main方法public static void main(String[] args){System.out.println("Hello world!");} } 运行结果 Hello world! java编写主程序常见错误&#xff1a; 1、System ---首字母没有…...

MySQL(四)查询

1、MySQL限性约束 —非空、唯一(自增)、主外键、检查(MySQL存在但是不能用)。 约束主要完成对数据的校验,保证数据库数据的完整性;如果有相互依赖数据,保证该数据不被删除。 1)常用五类约束 not null :非空约束,指定某列不为空。 unique:唯一约束,指定某列和几列组…...

嵌入式学习——网络编程(TCP)——day31

1. TCP和UDP的区别 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09; UDP&#xff08;User Datagram Protocol&#xff0c;用户数据报协议&#xff09; 1.1 连接方式 TCP 是面向连接的协议&#xff0c;它在数据传输前需要通过三次握手建立…...

[STM32]定位器与PWM的LED控制

目录 1. 深入了解STM32定时器原理&#xff0c;掌握脉宽调制pwm生成方法。 (1)STM32定时器原理 原理概述 STM32定时器的常见模式 使用步骤 (2)脉宽调制pwm生成方法。 2. 实验 (1)LED亮灭 代码 测试效果 (2)呼吸灯 代码 测试效果 3.总结 1. 深入了解STM32定时器原…...

可视化数据科学平台在信贷领域应用系列五:零代码可视化建模

信贷风控模型是金融机构风险管理的核心工具&#xff0c;在信贷风险管理工作中扮演着至关重要的角色。随着信贷市场的环境不断变化&#xff0c;信贷业务的风险日趋复杂化和隐蔽化&#xff0c;开发和应用准确高效的信贷风控模型显得尤为重要。信贷风险控制面临着越来越大的挑战和…...

Windows 11广告植入“另辟蹊径”:PC Manager暗示若不使用必应搜索,你的系统可能需要“修复”

Edge浏览器近期增添了许多实用的新功能&#xff0c;如侧边栏、休眠标签页和沉浸式阅读器。话虽如此&#xff0c;浏览器中仍有一部分功能被部分用户视为“冗余软件”和不必要的累赘。 随着Windows 11用户逐渐习惯操作系统关键位置出现越来越多的广告&#xff0c;微软似乎正尝试以…...

一线教师教学工具汇总

亲爱的教师们&#xff01;我们的教学工具箱里也该更新换代啦&#xff01;今天&#xff0c;就让我来给大家安利一波超实用的教学神器&#xff1a; 百度文库小程序 —— 在线图书馆 百度文库&#xff0c;一个宝藏级的在线文档分享平台&#xff01;在这里&#xff0c;你可以找到海…...

【数据结构】栈和队列-->理解和实现(赋源码)

Toc 欢迎光临我的Blog&#xff0c;喜欢就点歌关注吧♥ 前面介绍了顺序表、单链表、双向循环链表&#xff0c;基本上已经结束了链表的讲解&#xff0c;今天谈一下栈、队列。可以简单的说是前面学习的一特殊化实现&#xff0c;但是总体是相似的。 前言 栈是一种特殊的线性表&…...

一篇教会你CSS定位

前言&#xff1a;在网页布局的时候&#xff0c;我们需要将想要的元素放到指定的位置上&#xff0c;这个时候我们就可以使用CSS中的定位操作。 先让我们看一下本篇文章的大致内容&#xff1a; 目录 什么是定位 1.相对定位 2.绝对定位 3. 固定定位 4. 粘性定位 5. 定位层级…...

Hive的常规操作

Hive常规操作 hive常用交互命令 -e执行sql语句 [rootmaster ~]# hive -e "show databases";-f执行sql脚本 [rootmaster ~]# hive -f /usr/local/demo.sql查看hive中输入的所有命令 [rootmaster ~]# cat ~/.hivehistory操作库 创建库 语法&#xff1a; create…...

redis做为缓存,mysql的数据如何与redis进行同步呢?

让我们一步步来实现如何让MySQL数据库的数据和Redis缓存保持同步。想象一下&#xff0c;MySQL是一个大仓库&#xff0c;存放着所有重要的货物&#xff08;数据&#xff09;&#xff0c;而Redis则像是一个快速取货窗口&#xff0c;让你能更快拿到常用的东西。为了让两者保持一致…...

【Map】集合总结

一、Map 之前学习的Collection集合体系是单列集合,即一次存取一个元素 Map是双列集合,一次存取一对元素,这一对儿称为键值对,key-value,且key是映射到value 所谓键映射到值,是指只能通过键找到值,无法通过值找键 Map中键不能重复!值允许重复 Map中一个键,只能对应一个值 Ma…...

SpringBoot实现发送邮件功能

目录 一、开启邮件服务 二、导入pom依赖 三、配置yml文件 四、发送邮件 4.1、发送文字邮件 4.2、发送html邮件 4.3、发送附件邮件 4.4、发送图片邮件 一、开启邮件服务 这里拿QQ邮箱举例。 翻到下面进行开启,之后获取授权码。 二、导入pom依赖 <dependency><…...

外观数列 ---- 模拟

题目链接 题目: 分析: 题目的意思如下:所以我们需要引用双指针来找到连续的字符有几个, 并添加到答案中, 接着将此字符添加到答案中, 让left right , 继续向后遍历整个字符串, 重复上面的操作将答案重新赋给字符串, 继续重复上述操作, 应该重复n - 1 次, 因为n为1的时候, 直…...

上心师傅的思路分享(二)

Druid monitor 与Springboot常见报错界面渗透小技巧 目录 前言 1.Druid monitor介绍 2.Druid未授权(1rank) 3.druid弱口令 4.Druid进一步利用 4.1 URL监控 4.2 Session监控 利用思路 EditThisCookie(小饼干插件) 5.SpringBoot Actuator未授权访问漏洞 5.1 简介 5…...

116页 | 2024年中国金融行业网络安全研究报告(免费下载)

以上是资料简介和目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff01;&#xff01;&#xff01;...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据&#xff01;该数据集源自2025年4月发表于《地理学报》的论文成果…...

Redis上篇--知识点总结

Redis上篇–解析 本文大部分知识整理自网上&#xff0c;在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库&#xff0c;Redis 的键值对中的 key 就是字符串对象&#xff0c;而 val…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...