组件的注册和引用

news2024/10/5 14:18:04

在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 组件的内容。


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

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

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

相关文章

交互式流程图组件DHTMLX Diagram v6.0 - 拥有更灵活的高度可定制功能

DHTMLX Diagram库允许用几行代码构建JavaScript流程图&#xff0c;通过自动布局和实时编辑器&#xff0c;它可以更容易地将复杂数据可视化到一个整洁的层次结构中。 DHTMLX Diagram v6.0版本发布&#xff0c;带来了众多令人兴奋的新功能和改进&#xff0c;使得这个JavaScript图…

App UI 风格,尽显魅力

精妙无比的App UI 风格

摄影店展示服务预约小程序的作用是什么

摄影店包含婚照、毕业照、写真、儿童照、工作照等多个服务项目&#xff0c;虽然如今人们手机打开便可随时拍照摄影&#xff0c;但在专业程度和场景应用方面&#xff0c;却是需要前往专业门店服务获取。 除了进店&#xff0c;也有外部预约及活动、同行合作等场景&#xff0c;重…

ROS socketcan_bridge使用说明

ROS socketcan_bridge使用说明&#xff08;以ubuntu20.04为例&#xff09; socketcan_bridge是什么 ROS针对socketcan提供了三个层次的驱动库&#xff0c;分别是ros_canopen&#xff0c;socketcan_bridge和socketcan_interface。 socketcan_interface&#xff1a; 功能&#x…

Docker:技术架构演进

文章目录 基本概念架构演进单机架构应用数据分离架构应用服务集群架构读写分离/主从分离架构冷热分离架构垂直分库微服务容器编排架构 本篇开始进行对于Docker的学习&#xff0c;Docker是一个陌生的词汇&#xff0c;那么本篇开始就先从技术架构的角度出发&#xff0c;先对于技术…

python词云生成库-wordcloud

内容目录 一、模块介绍二、WordCloud常用的方法1. generate(self, text)2. generate_from_frequencies(frequencies)3. fit_words(frequencies)4. generate_from_text(text) 三、进阶技巧1. 设置蒙版2. 设置过滤词 WordCloud 是一个用于生成词云的 Python 库&#xff0c;它可以…

6-Maven的使用

6-Maven的使用 常用maven命令 //常用maven命令 mvn -v //查看版本 mvn archetype:create //创建 Maven 项目 mvn compile //编译源代码 mvn test-compile //编译测试代码 mvn test //运行应用程序中的单元测试 mvn site //生成项目相关信息的网站 mvn package //依据项目生成 …

问题:卫生事业的发展受多种因素的影响和制约,以下属于卫生事业发展影响因素的有(? ?)。 #微信#其他

问题&#xff1a;卫生事业的发展受多种因素的影响和制约&#xff0c;以下属于卫生事业发展影响因素的有&#xff08;? ?&#xff09;。 A、经济水平 B、管理水平 C、人口素质 D、科技发展 参考答案如图所示

全面解析:渗压计数据如何预测地下水趋势

随着人们对水资源日益增长的需求和对环境保护意识的提升&#xff0c;地下水位的监测和预测成为了水利工程和环境科学领域的重要研究内容。渗压计作为一种能够测量土壤或岩石中孔隙水压力的仪器&#xff0c;在地下水位的监测中发挥着关键作用。本文将从渗压计的工作原理、安装方…

Ubuntu系统安装docker以及安装yg系统所能使用到的插件

Ubuntu系统安装docker以及安装yg系统所能使用到的插件 前言&#xff1a;建议大家使用ubuntu系统的时候&#xff0c;直接永久关闭防火墙目前我们处于学习状态&#xff0c;这样有利于提高开发效率。 项目地址&#xff1a;https://github.com/xzhHas/yg 文章目录 Ubuntu系统安装do…

Windows搭建apache网站

1、官网下载安装包&#xff0c;注意下载服务器对应操作系统的安装包&#xff08;此案例为64位操作系统&#xff09; Apache VS17 binaries and modules downloadFor (business) webmasters, developers and home-users who want running always up to date Windows VS17 binar…

RK3568笔记三十:PP-ORCv3自训练部署

若该文为原创文章&#xff0c;转载请注明原文出处。 一、介绍 PP-OCR 是百度公布并开源的OCR领域算法&#xff0c;一个轻量级的OCR系统&#xff0c;在实现前沿算法的基础上&#xff0c;考虑精度与速度的平衡&#xff0c; 进行模型瘦身和深度优化&#xff0c;使其尽可能满足产业…

Django request.POST获取提交的表单数据

在Django中&#xff0c;request.POST 是一个特殊的属性&#xff0c;它是一个类似于字典的对象&#xff0c;用于访问通过POST方法提交的表单数据。如果你在视图中使用 print(request.POST.get(username))&#xff0c;这通常意味着你正在尝试从一个HTML表单中获取一个名为 userna…

映宇宙:多基础设施下,如何进行数据库选型升级|OceanBase 《DB大咖说》(五)

随着多基础设施成为行业发展的主流趋势&#xff0c;数据库选型时需要考虑哪些关键因素&#xff1f;对于云数据库的升级策略&#xff0c;又该如何制定&#xff1f;OceanBase《DB 大咖说》第五期特别邀请了映宇宙&#xff08;原映客&#xff09;的数据库负责人赵智博先生&#xf…

DENet:融合全局与局部,多模块策略,超越传统分割方法,提升青光眼筛查精度

DENet&#xff1a;融合全局与局部&#xff0c;多模块策略&#xff0c;超越传统分割方法&#xff0c;提升青光眼筛查精度 提出背景精细拆解A. 全局视网膜图像层面B. 视盘区域层面 提出背景 论文&#xff1a;https://arxiv.org/pdf/1805.07549 代码&#xff1a;https://github.…

使用mysqldump迁移MySQL数据

将Windows系统中MySQL数据导出到其他系统中MySQL数据库中 1.导出数据 进入MySQL安装目录的bin目录下&#xff0c;打开dos窗口执行以下命令 --single-transaction 参数表示不锁表 1.1 指定部分表导出 mysqldump -u用户名 -p密码 数据库名 表1 表2 表3 --single-transact…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:测控巡检智能机器人

是集研发、生产、制造、销售为一体的高新技术企业&#xff0c;是国内"皮带机智能巡检"领域的技术引领者。公司先后获得国家级高新技术企业、太原市市级企业技术中心、太原市技术创新示范企业、山西省民营科技企业、山西省专精特新中小企业、山西省四新中小企业、太原…

【经验分享】搭建电商项目过程中关于淘宝APP商品数据采集的要点

淘宝APP商品采集的注意事项和应用可以归纳为以下几点&#xff1a; 注意事项&#xff1a; 遵守平台规则&#xff1a; 在进行淘宝商品采集时&#xff0c;务必遵守淘宝平台的相关规则&#xff0c;不得采集敏感信息&#xff0c;如用户隐私、商家敏感数据等。尊重商家权益&#xf…

PMP考试技巧和PMP考试大纲

今日分享PMP考试技巧&#xff0c;文末附上PMP考试大纲&#xff0c;你会喜欢的! PMP考试大纲&#xff1a;人员试题占比42% &#xff0c;流程试题占比50%&#xff0c;商业环境试题占比8%。 PMP解题策略 PMP考试默认条件 精准审题 E(Eye):找到题眼&#xff1b; K(Key):找到考…

ui自动化中,selenium进行元素定位,以及CSS,xpath定位总结

几种定位方式 简单代码 from selenium import webdriver import time# 创建浏览器驱动对象 from selenium.webdriver.common.by import Bydriver webdriver.Chrome() # 参数写浏览器驱动文件的路径&#xff0c;若配置到环境变量就不用写了 # 访问网址 driver.get…