svgicon 实现自定义 svg icon

发布时间 2023-06-03 18:27:48作者: 攻城Alone

  对于后台管理框架,经常要用到自定义的 svg 来当做路由的icon图标。
https://mmf-fe.github.io/svgicon,这是这款插件的地址。这里总结下在 vue3 + vite 中使用改插件的方式。

安装

  yarn add @yzfe/svgicon @yzfe/vue3-svgicon
  yarn add vite-plugin-svgicon --dev

配置

vite.config.ts 中

  import { defineConfig } from 'vite'
  import vue from '@vitejs/plugin-vue'
  import svgicon from 'vite-plugin-svgicon'

  export default defineConfig({
    plugins: [
      vue(),
      svgicon({
        include: ['**/svg-icon/**/*.svg']
      })
    ]
  })

main.ts 中

  import { createApp } from 'vue'
  import App from './App'
  import { VueSvgIconPlugin } from '@yzfe/vue3-svgicon'
  import '@yzfe/svgicon/lib/svgicon.css'


  createApp(App)
      .use(VueSvgIconPlugin, {
          tagName: 'icon'
      })
      .mount('#app')

使用

  <template>
    ....
    <icon :data="switchObj[onlyOneChild.meta.icon]" original></icon>
    ....
  </template>
  <script lang="ts">
    ...
    import example from '@/icons/example.svg'
    import hospital from '@/icons/hospital.svg'
    import patientList from '@/icons/patientList.svg'
    import scanCode from '@/icons/scanCode.svg'
    import home from '@/icons/home.svg'
    export default defineComponent({
      data() {
        return {
          switchObj: {
            example,
            hospital,
            patientList,
            scanCode,
            home
          }
        }
      }
    })
  </script>