• Vue封装全局SVG组件


    1.SVG图标配置

    1.安装插件

    npm install vite-plugin-svg-icons -D

    2.Vite.config.ts中配置

    1. import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
    2. import path from 'path'
    3. export default () => {
    4. return {
    5. plugins: [
    6. createSvgIconsPlugin({
    7. // Specify the icon folder to be cached
    8. iconDirs: [path.resolve(process.cwd(), 'src/assets/icons')],
    9. // Specify symbolId format
    10. symbolId: 'icon-[dir]-[name]',
    11. }),
    12. ],
    13. }
    14. }

    3.main.ts中导入

    1. //SVG插件必须的配置
    2. import 'virtual:svg-icons-register'

    4.组件内使用

    1.下载svg代码

    阿里巴巴图标库或者其他图标库下载SVG代码,复制到对应的文件中

    2.SVG使用
    1. <script setup lang="ts">script>
    2. <style scoped lang="scss">style>

    2.SVG组件封装

    1.创建组件文件

    2.封装组件 

    1. <script setup lang="ts">
    2. defineProps({
    3. //xlink:href属性值的前缀
    4. prefix: {
    5. type: String,
    6. default: '#icon-'
    7. },
    8. //svg矢量图的名字
    9. name: String,
    10. //svg图标的颜色
    11. color: {
    12. type: String,
    13. default: ''
    14. },
    15. //svg宽度
    16. width: {
    17. type: String,
    18. default: '16px'
    19. },
    20. //svg高度
    21. height: {
    22. type: String,
    23. default: '16px'
    24. }
    25. })
    26. script>
    27. <style scoped lang="scss">style>

    3.在其他组件使用

    1. <script setup lang="ts">
    2. import SvgIcon from '@/components/Svg/index.vue'
    3. script>
    4. <style scoped lang="scss">style>

    3.SVG组件注册为全局组件

    1.创建文件

    2.注册全局组件

    1. //引入全局组件
    2. import SvgIcon from './SvgIcon/index.vue';
    3. import type { App, Component } from 'vue';
    4. //全局对象
    5. const components: { [name: string]: Component } = { SvgIcon };
    6. //对外暴露插件对象
    7. export default {
    8. //insatll方法
    9. install(app: App) {
    10. //注册项目为全局组件(可注册多个)
    11. Object.keys(components).forEach((key: string) => {
    12. //注册全局组件
    13. app.component(key, components[key]);
    14. })
    15. }
    16. }

    3.引入到main.ts

    1. import gloablComponent from './components/index';
    2. app.use(gloablComponent);

    4.组件中使用

    1. <script setup lang="ts">script>
    2. <style scoped lang="scss">style>

  • 相关阅读:
    电脑没声音,喇叭上一个叉,显示无法找到输入输出设备(录制,耳机等等)
    86 # express 基本实现
    基础说明 BSP(Boot Strap Processor)
    docker安装mysql
    进程之理解进程的概念
    js 表单脚本
    程序设计:C++ 一个用目录结构构建索引的类
    vue2+webpack/vue3+vite 封装svg组件总结笔记
    LeetCode 0509. 斐波那契数:尝试以四种方式吃透(四种大方法+两种小优化)
    docker 的入门笔记
  • 原文地址:https://blog.csdn.net/m0_71469120/article/details/133408792