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

Vue 3 中如何注册全局自定义组件:一个 SVG 图标的例子

Vue 3 中如何注册全局自定义组件:一个 SVG 图标的例子

嘿,小伙伴们!今天我们来聊一下在 Vue 3 中如何注册一个全局的自定义组件。我知道有时候我们想要重复使用某些组件,比如说 SVG 图标,但不想在每个地方都重新定义。那么,我们该怎么做呢?🤔

什么是全局组件?

全局组件就是不管你在哪里都可以直接使用的组件,无需在子组件中一次次地引入和注册。这就好像你在厨房做饭时,把盐和胡椒粉放在一个随手可拿的地方,总比每次使用都要去储物柜找要方便多了!🍴

SVG 图标封装成组件

首先,我们要为我们的 SVG 图标创建一个简单的组件。假设我们要使用如下的 SVG:

<svg><use xlink:href="#icon-luxian" />
</svg>

我们想把它封装成一个组件 <svg-icon>,并可以传递一些参数,比如 namecolorwidthheight。下面就是我们的组件实现,在components中创建SvgIcon文件夹创建index.vue:

<template><div><svg :style="{ width: width, height: height }"><use :xlink:href="prefix + name" :fill="color"></use></svg></div>
</template><script setup lang="ts">
defineProps({prefix: {type: String,default: '#icon-'},name: String,color: {type: String,default: ""},width: {type: String,default: '100px'},height: {type: String,default: '100px'}
})
</script><style scoped></style>

这里我们使用 defineProps 来接受父组件传递的参数,比如 namecolor。是不是很简单?😄

批量注册全局组件

接下来,我们要想办法批量注册这些全局组件。为此,我们在 components 目录下创建一个 index.ts 文件,负责注册所有的全局组件:

import SvgIcon from './SvgIcon/index.vue';
import type { App, Component } from 'vue';const components: { [name: string]: Component } = { SvgIcon };export default {install(app: App) {Object.keys(components).forEach((key: string) => {app.component(key, components[key]);});}
}

这段代码创建了一个可以被 Vue 3 应用安装的插件。通过遍历 components 对象,我们能够把所有组件都注册为全局组件。

在入口文件中使用

最后,只需在你的 main.ts 文件中使用我们创建的插件:

import { createApp } from 'vue';
import App from './App.vue';
import globalComponent from '@/components';const app = createApp(App);app.use(globalComponent); // 自动执行 install 方法app.mount('#app');

好了,这样我们就能在应用中的任何地方使用我们的 <svg-icon> 组件了,是不是超酷的😁?

结论

当你有一些通用的组件需要在多个页面中使用时,注册为全局组件无疑是一个非常不错的选择。这样不仅能让代码更加简洁,还能避免重复定义和使用可能导致的错误。

相关文章:

Vue 3 中如何注册全局自定义组件:一个 SVG 图标的例子

Vue 3 中如何注册全局自定义组件&#xff1a;一个 SVG 图标的例子 嘿&#xff0c;小伙伴们&#xff01;今天我们来聊一下在 Vue 3 中如何注册一个全局的自定义组件。我知道有时候我们想要重复使用某些组件&#xff0c;比如说 SVG 图标&#xff0c;但不想在每个地方都重新定义。…...

SpringBoot+Vue3-学习笔记

1、SpringBoot特性 ①起步依赖&#xff0c;所有需要的依赖全部配置在一起 ②自动配置&#xff1a;遵循约定大约配置的原则&#xff0c;在boot程序启动后&#xff0c;一些bean对象会自动注入到ioc容器&#xff0c;不需要手动声明&#xff0c;简化开发 ③内嵌的Tomcat、Jetty(无…...

银河麒麟系统安装mysql5.7【亲测可行】

一、安装环境 cpu&#xff1a;I5-10代&#xff1b; 主板&#xff1a;华硕&#xff1b; OS&#xff1a;银河麒麟V10&#xff08;SP1&#xff09;未激活 架构&#xff1a;Linux 5.10.0-9-generic x86_64 GNU/Linux mysql版本&#xff1a;mysql-5.7.34-linux-glibc2.12-x86_64.ta…...

为什么WP建站更适合于谷歌SEO优化?

在当今数字时代&#xff0c;建立一个网站似乎变得容易&#xff0c;但要构建一个真正能够带来流量和订单的网站却并非易事。特别是在谷歌SEO优化方面&#xff0c;不同的建站程序在SEO支持方面的效果差异显著。对于希望提升搜索引擎表现的用户来说&#xff0c;WordPress无疑是最佳…...

ue----git局域网内部署裸仓库,别的机器进行访问

最近由于经常迁移项目到另一台机器上进行部署更新一点就要整个迁移 弄得麻烦了 就在网上学了一下这个方式 首先我们在想要建立裸仓库的电脑上找到一个文件夹放置我们的裸仓库 在此点击鼠标右键选择 open git bash here 输入命令 创裸仓库 git init --bare gitTestName.git…...

leetcode876.链表的中间结点

目录 问题描述示例提示 具体思路思路一 代码实现 问题描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 题目链接&#xff1a;链表的中间结点 示例 提示 链表的结点数范围是 [1, 100]   1 &…...

旧手机热点无法提供ipv6解决方法(emui 8 热点提供ipv6)

旧手机热点无法提供ipv6解决方法 手机&#xff1a;荣耀8x 系统版本: EMUI 8 网络&#xff1a;移动流量卡 解决方案 设置-》无线和网络-》移动网络-》接入点名称(APN)-》cmiot 修改 APN协议: IPv4/IPv6 修改 APN漫游协议: IPv4/IPv6...

解决DeepSeek服务器繁忙问题的实用指南

目录 简述 1. 关于服务器繁忙 1.1 服务器负载与资源限制 1.2 会话管理与连接机制 1.3 客户端配置与网络问题 2. 关于DeepSeek服务的备用选项 2.1 纳米AI搜索 2.2 硅基流动 2.3 秘塔AI搜索 2.4 字节跳动火山引擎 2.5 百度云千帆 2.6 英伟达NIM 2.7 Groq 2.8 Firew…...

新数据结构(12)——代理

什么是代理 在进行操作时有时不希望用户直接接触到目标&#xff0c;这时需要使用代理让用户间接接触到目标 给目标对象提供一个代理对象&#xff0c;并且由代理对象控制着对目标对象的引用 图解&#xff1a; 代理的目的 控制访问&#xff1a;通过代理对象的方式间接的访问目…...

记一次一波三折的众测SRC经历

视频教程和更多福利在我主页简介或专栏里 &#xff08;不懂都可以来问我 专栏找我哦&#xff09; 目录&#xff1a; 前言 波折一&#xff1a;RCE漏洞利用失败 波折二&#xff1a;SQL时间盲注 波折三&#xff1a;寻找管理后台 总结 前言 先谈个人SRC心得体会吧&#xff0c;我虽…...

Laravel从入门到上云

大家好&#xff0c;今天给大家介绍一下PHP的经典框架Laravel。 本文假定你已经安装好了PHP执行环境&#xff0c;并且使用PHP版本为PHP8.0以上。 首先&#xff0c;让我们来安装Laravel框架&#xff0c;执行命令&#xff1a;composer create-project laravel/laravel 命令执行…...

【小游戏】C++控制台版本俄罗斯轮盘赌

制作团队&#xff1a;洛谷813622&#xff08;Igallta&#xff09; 989571&#xff08;_ayaka_&#xff09; Mod&#xff1a;_ayaka_ 双人模式&#xff1a;Igallta 公告&#xff1a; 原先的9.8改名为 Alpha 1.0&#xff0c;以后每次更新都增加 0.1。 Alpha 1.11 改为 Beta 1…...

【前端】使用WebStorm创建第一个项目

文章目录 前言一、步骤1、启动2、创建项目3、配置Node.js4、运行项目 二、Node.js介绍 前言 根据前面文章中记录的步骤&#xff0c;已经安装好了WebStorm开发软件&#xff0c;接下来我们就用这个IDE开发软件创建第一个项目。 一、步骤 1、启动 启动软件。 2、创建项目 新建…...

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网&#xff08;8.140.26.187&#xff09;&#xff0c;测试/生产环境连内网&#xff08;172.20.59.17&#xff09; 内外网地址不同&#xff0c;但指定的库是同一个 内网IP地址范围包括&#xff1a; 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…...

C++,设计模式,【工厂方法模式】

文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…...

golang--字符串处理(rune类型)

在 Go 语言中&#xff0c;rune 类型是一个非常重要的基础类型&#xff0c;用于处理 Unicode 字符。以下是关于 rune 类型的详细用法说明&#xff1a; 一、基础概念 类型定义 rune 是 int32 的别名&#xff08;type rune int32&#xff09;&#xff0c;表示一个 Unicode 码点&a…...

如何通过AI优化敏捷开发中的任务管理与分配?

用ChatGPT做软件测试 在现代软件开发中&#xff0c;敏捷开发&#xff08;Agile&#xff09;已成为一种广泛采用的开发方法论&#xff0c;其核心思想是强调快速响应变化、与客户的持续沟通以及团队协作的高效性。然而&#xff0c;随着项目规模的不断扩大&#xff0c;敏捷开发面临…...

第1章大型互联网公司的基础架构——1.11 消息中间件技术

消息队列&#xff08;Message Queue&#xff09;是分布式系统中最重要的中间件之一&#xff0c;在服务架构设计中被广泛使用。 1.11.1 通信模式与用途 消息中间件构建了这样的通信模式&#xff1a; 一条消息由生产者创建&#xff0c;并被投递到存放消息的队列中&#xff1b;…...

FlutterAssetsGenerator插件的使用

在Plugins中找到FlutterAssetsGenerator插件&#xff0c;点击安装。 更改生成的资源索引类可以修改名字。 在根目录下创建assets/images文件夹&#xff0c;用于存储图片。 点击images文件夹&#xff0c;鼠标右键点击Flutter&#xff1a;Configuring Paths&#xff0c;pub…...

EasyExcel 自定义头信息导出

需求&#xff1a;需要在导出 excel时&#xff0c;合并单元格自定义头信息(动态生成)&#xff0c;然后才是字段列表头即导出数据。 EasyExcel - 使用table去写入&#xff1a;https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write#%E4%BD%BF%E7%94%A8table%E…...

从‘KeyError’到成功加载:手把手教你调试ViT权重加载的完整流程(含PyTorch/TensorFlow对比)

从‘KeyError’到成功加载&#xff1a;手把手教你调试ViT权重加载的完整流程&#xff08;含PyTorch/TensorFlow对比&#xff09; 当你第一次尝试加载预训练的Vision Transformer&#xff08;ViT&#xff09;模型权重时&#xff0c;看到控制台抛出KeyError: Transformer/encoder…...

Weasis终极指南:免费开源DICOM医学影像查看器完整使用教程

Weasis终极指南&#xff1a;免费开源DICOM医学影像查看器完整使用教程 【免费下载链接】Weasis Weasis is a web-based DICOM viewer for advanced medical imaging and seamless PACS integration. 项目地址: https://gitcode.com/gh_mirrors/we/Weasis 想要零成本获得…...

WinCC V7.5 SP1图层控制脚本实战:从单个显示到组合切换的完整代码解析

WinCC V7.5 SP1图层控制脚本实战&#xff1a;从单个显示到组合切换的完整代码解析 在工业自动化HMI开发中&#xff0c;WinCC的图层控制功能是构建复杂人机界面的重要工具。面对包含数十个图层的画面时&#xff0c;如何高效管理图层显示状态成为工程师必须掌握的技能。本文将带您…...

Spring Boot项目里,如何给OpenFeign接口加上详细的请求和响应日志(附Log4j2配置)

Spring Boot项目中OpenFeign请求/响应日志全链路配置实战 微服务架构下&#xff0c;接口调用如同神经网络中的突触传递——每一次通信都承载着关键业务数据。当某个Feign调用出现异常时&#xff0c;开发者的第一反应往往是&#xff1a;"到底发送了什么参数&#xff1f;服…...

基于astron-agent框架构建智能体:从模块化设计到生产部署实战

1. 项目概述&#xff1a;智能体开发的新范式最近在探索大模型应用落地的过程中&#xff0c;我一直在寻找一个能真正把想法快速变成可交互、有记忆、能执行复杂任务智能体的框架。市面上工具不少&#xff0c;但要么过于笨重&#xff0c;像个“全家桶”&#xff0c;上手就得先学一…...

5分钟快速上手Testsigma:零代码自动化测试平台终极指南

5分钟快速上手Testsigma&#xff1a;零代码自动化测试平台终极指南 【免费下载链接】testsigma Testsigma is an agentic test automation platform powered by AI-coworkers that work alongside QA teams to simplify testing, accelerate releases and improve quality acro…...

BetterJoy:解锁Switch手柄在PC平台的全新可能

BetterJoy&#xff1a;解锁Switch手柄在PC平台的全新可能 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/gh_mirro…...

收藏!小白程序员必备:手把手教你用Harness让大模型稳定落地生产环境

企业级AI落地常遇模型逻辑混乱、上下文丢失等问题。文章介绍Harness作为Agent运行时控制系统&#xff0c;通过知识层、约束与流程层、反馈与运行时层&#xff0c;解决模型不可控、不稳定问题。实现Agent自主执行、权限管控、闭环纠错&#xff0c;提升AI可靠性。文章还提供分层架…...

SenseVoice-small-onnx开源ASR部署教程:无需CUDA依赖的CPU友好型方案

SenseVoice-small-onnx开源ASR部署教程&#xff1a;无需CUDA依赖的CPU友好型方案 本文介绍如何快速部署SenseVoice-small-onnx语音识别模型&#xff0c;这是一个完全基于CPU运行的轻量化方案&#xff0c;无需GPU也能获得高效的语音转写体验。 1. 项目概述 SenseVoice-small-on…...

Qwen3.5-9B-GGUF赋能前端设计:根据需求描述生成UI组件代码与设计稿描述

Qwen3.5-9B-GGUF赋能前端设计&#xff1a;根据需求描述生成UI组件代码与设计稿描述 1. 场景痛点&#xff1a;前端开发的沟通成本 在产品研发流程中&#xff0c;从需求文档到最终实现往往存在巨大的沟通成本。产品经理用自然语言描述一个功能需求&#xff0c;设计师需要将其转…...