vue3---自定义插件注册全局对象

① 在src/components文件夹下创建SvgIcon组件

复制代码
<template>
    <div>
        <svg :style="{ width: width, height: height }">
            <use :xlink:href="prefix + name" :fill="color"></use>
        </svg>
    </div>
</template>

<script setup lang="ts">
defineProps({
    // xlink:href属性值的前缀
    prefix: {
        type: String,
        default: '#icon-'
    },
    // svg矢量图名字
    name: String,
    // svg图标颜色
    color: {
        type: String,
        default: ''
    },
    // svg图标宽度
    width: {
        type: String,
        default: '16px'
    },
    // svg图标高度
    height: {
        type: String,
        default: '16px'
    }
})
</script>

<style scoped></style>

② 在src/components文件夹下创建index.ts:用于注册components文件夹下全部的全局组件

复制代码
// 引入项目中的全部全局组件
import SvgIcon from './SvgIcon/index.vue'
import Pagination from './Pagination/index.vue'

// 定义全局组件对象:用于存放所有要引入的全局组件
const allGlobalComponents: any = {
    SvgIcon,
    Pagination
}

// 对外暴露一个插件对象
export default {
    install(app: any) {
        // 遍历注册全局组件对象中的所有组件
        Object.keys(allGlobalComponents).forEach(keys => {
            app.component(keys, allGlobalComponents[keys])
        })
    }
}

③在入口文件(通常是main.ts)引入步骤②的index.ts文件,通过app.use方法安装自定义插件

复制代码
// 引入自定义插件对象:注册全局组件
import globalComponent from '@/components/index.ts'
// 安装自定义插件,使用该方法就会调用自定义插件对象文件中的install方法,从而进行全局组件注册
app.use(globalComponent)
相关推荐
thatway198934 分钟前
闲聊-关于AI终结者的警醒
前端
努力的小郑41 分钟前
突发!Claude Code 51万行源码全网裸奔:一场史诗级“开源”事故,国内大厂笑麻了
前端·后端·ai编程
七度黑光1 小时前
用 openclaw 给故障复盘打分:质量审核自动化实践
运维·服务器·前端·数据库·自动化
HashTang1 小时前
Claude Code 源码中 REPL.tsx 深度解析:一个 5005 行 React 组件的架构启示
前端·后端·ai编程
wendycwb2 小时前
前端城市地址根据最后一级倒推,获取各层级id的方法
前端·vue.js·typescript
终端鹿2 小时前
Vue3 模板引用 (ref):操作 DOM 与子组件实例 从入门到精通
前端·javascript·vue.js
千寻girling2 小时前
不知道 Java 全栈 + AI 编程有没有搞头 ?
前端·人工智能·后端
小码哥_常3 小时前
Android开发:精准捕获应用的前后台行踪
前端
蜡台3 小时前
Vue 打包优化
前端·javascript·vue.js·vite·vue-cli
木斯佳3 小时前
前端八股文面经大全:快手前端一面 (2026-03-29)·面经深度解析
前端·宏任务·原型链·闭包