Heim > Web-Frontend > View.js > Eine ausführliche Analyse der Verwendung von SVG-Symbolen in vue3+vite

Eine ausführliche Analyse der Verwendung von SVG-Symbolen in vue3+vite

青灯夜游
Freigeben: 2022-04-28 20:58:47
Original
6190 Leute haben es durchsucht

SVG-Bilder werden häufig in Projekten verwendet. In diesem Artikel wird die Verwendung von SVG-Symbolen in vue3 + vite vorgestellt. Ich hoffe, dass er für alle hilfreich ist.

Eine ausführliche Analyse der Verwendung von SVG-Symbolen in vue3+vite

vite-plugin-svg-icons

  • Vorladen Generieren Sie alle Symbole, wenn das Projekt läuft, Sie müssen den Dom nur einmal bedienen
  • Hohe Leistung Integrierter Cache, nur wenn das Datei wird geändert. Erst dann wird sie neu generiert. =2.0.0
  • yarn add vite-plugin-svg-icons -D
    # or
    npm i vite-plugin-svg-icons -D
    # or
    pnpm install vite-plugin-svg-icons -D
    Nach dem Login kopieren

Verwenden Sie das Konfigurations-Plugin

import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
import path from 'path'

export default () => {
  return {
    plugins: [
      createSvgIconsPlugin({
        // 指定需要缓存的图标文件夹
        iconDirs: [path.resolve(process.cwd(), 'src/icons')],
        // 指定symbolId格式
        symbolId: 'icon-[dir]-[name]',

        /**
         * 自定义插入位置
         * @default: body-last
         */
        // inject?: 'body-last' | 'body-first'

        /**
         * custom dom id
         * @default: __svg__icons__dom__
         */
        // customDomId: '__svg__icons__dom__',
      }),
    ],
  }
}
Nach dem Login kopieren

in

vite.config.ts, um das Registrierungsskript in src/main.js

import 'virtual:svg-icons-register'
Nach dem Login kopieren
einzuführen Anwendung es in Komponenten

SvgIcon-Komponente erstellen

/src/components/SvgIcon/index.vue
    <template>
      <svg aria-hidden="true" class="svg-icon" :width="props.size" :height="props.size">
        <use :xlink:href="symbolId" :fill="props.color" />
      </svg>
    </template>
    
    <script setup>
    import { computed } from &#39;vue&#39;
    const props = defineProps({
      prefix: {
        type: String,
        default: &#39;icon&#39;
      },
      name: {
        type: String,
        required: true
      },
      color: {
        type: String,
        default: &#39;#333&#39;
      },
      size: {
        type: String,
        default: &#39;1em&#39;
      }
    })
    
    const symbolId = computed(() => `#${props.prefix}-${props.name}`)
    </script>
    Nach dem Login kopieren

icons-Verzeichnisstruktur

# src/icons

- icon1.svg
- icon2.svg
- icon3.svg
- dir/icon1.svg
Nach dem Login kopieren

  • Globale Registrierungskomponenten

  • # src/main.js
    
    import { createApp } from 'vue'
    import App from './App.vue'
    import router from './router'
    
    import ElementPlus from 'element-plus'
    import 'element-plus/dist/index.css'
    
    import svgIcon from "@/components/SvgIcon/index.vue";
    import &#39;virtual:svg-icons-register&#39;
    
    createApp(App)
        .use(ElementPlus)
        .use(router)
        .component('svg-icon', svgIcon)
        .mount('#app')
    Nach dem Login kopieren

    Seitennutzung
  • <template>
        <svg-icon v-if="props.icon" :name="props.icon" />
        <span v-if="props.title" slot=&#39;title&#39;>{{ props.title }}</span>
    </template>
    
    <script setup>
    
    const props = defineProps({
        icon: {
            type: String,
            default: &#39;&#39;
        },
        title: {
            type: String,
            default: &#39;&#39;
        }
    })
    </script>
    Nach dem Login kopieren

Holen Sie sich alle SymbolId
  • import ids from &#39;virtual:svg-icons-names&#39;
    // => [&#39;icon-icon1&#39;,&#39;icon-icon2&#39;,&#39;icon-icon3&#39;]
    Nach dem Login kopieren
    (Lernvideo-Sharing: Web-Front-End-Entwicklung, Einführung in die Programmierung
)

    Das obige ist der detaillierte Inhalt vonEine ausführliche Analyse der Verwendung von SVG-Symbolen in vue3+vite. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:juejin.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage