Heute habe ich bei der Verwendung von SVG in der Praxis des VUE3 + VITE-Projekts festgestellt, dass die vorherige Schreibmethode nicht verwendet werden kann. Die vorherige Verwendungsmethode bezieht sich auf die elegante Verwendung von SVG in VUE2 const req = require.context('./icons/svg', false, /\.svg$/) const erfordertAlles = erfordertInhalt => erfordertInhalt.keys().map(erfordertInhalt) erfordernAlles(req) Dann habe ich nach verschiedenen Materialien gesucht und es schließlich realisiert. Ohne weitere Umschweife hier der Code: Schritt 1: Dateiverzeichnis Schritt 2: Installieren Sie svg-sprite-loader npm installiere svg-sprite-loader -D # über Garn Garn fügt SVG-Sprite-Loader hinzu -D Schritt 3: Erstellen Sie die Datei svgIcon.vue <Vorlage> <svg :class="svgClass" v-bind="$attrs" :style="{color: color}"> <use :xlink:href="iconName" rel="external nofollow" /> </svg> </Vorlage> <Skript-Setup> importiere { defineProps, berechnet } von "vue"; const props = defineProps({ Name: { Typ: Zeichenfolge, erforderlich: true }, Farbe: Typ: Zeichenfolge, Standard: '' } }) const iconName = berechnet(()=>`#icon-${props.name}`); const svgClass = berechnet(()=> { console.log(Eigenschaftenname, 'Eigenschaftenname'); wenn (Eigenschaften.Name) { gibt `svg-icon icon-${props.name}` zurück } gib 'svg-icon' zurück }); </Skript> <style lang='scss'> .svg-Symbol { Breite: 1em; Höhe: 1em; füllen: aktuelle Farbe; vertikale Ausrichtung: Mitte; } </Stil> Schritt 4: Erstellen Sie einen Symbolordner zum Speichern von SVG-Dateien Schritt 5: SVG-Symbolkomponente global in main.js einfügen importiere { createApp } von 'vue' App aus „./App.vue“ importieren importiere svgIcon aus „./components/svgIcon.vue“ App erstellen(App).Komponente('svg-icon', svgIcon).mount('#app'); Schritt 6: Erstellen Sie svgBuilder.js im Plugins-Ordner (hier kommt der entscheidende Punkt), TS-Versionsreferenz: https://github.com/JetBrains/svg-sprite-loader/issues/434 importiere { readFileSync, readdirSync } von 'fs' let idPerfix = '' const svgTitle = /<svg([^>+].*?)>/ const clearHeightWidth = /(Breite|Höhe)="([^>+].*?)"/g const hasViewBox = /(viewBox="[^>+].*?")/g const clearReturn = /(\r)|(\n)/g Funktion findSvgFile(dir) { const svgRes = [] const dirents = readdirSync(dir, { mitDateitypen: true }) für (const dirent von dirents) { wenn (dirent.isDirectory()) { svgRes.push(...findSvgFile(dir + dirent.name + '/')) } anders { const svg = readFileSync(dir + dirent.name) .toString() .replace(clearReturn, '') .replace(svgTitle, ($1, $2) => { // konsole.log(++i) // konsole.log(dirent.name) lass Breite = 0 sei Höhe = 0 lass Inhalt = $2.replace( klareHöheBreite, (s1, s2, s3) => { wenn (s2 === 'Breite') { Breite = s3 } sonst wenn (s2 === 'Höhe') { Höhe = s3 } zurückkehren '' } ) wenn (!hasViewBox.test($2)) { Inhalt += `viewBox="0 0 ${width} ${height}"` } gibt `<symbol id="${idPerfix}-${dirent.name.replace( '.svg', '' )}" ${content}>` }) .replace('</svg>', '</symbol>') svgRes.push(svg) } } svgRes zurückgeben } export const svgBuilder = (Pfad, Perfix = 'Symbol') => { wenn (Pfad === '') return idPerfix = Perfix const res = findSvgFile(Pfad) // console.log(Res.Länge) // const res = [] zurückkehren { Name: "svg-transform", transformIndexHtml(html) { html.replace( zurückgeben '<Text>', ` <Text> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position: absolute; breite: 0; höhe: 0"> ${res.join('')} </svg> ` ) } } } Schritt 7: Ändern Sie abschließend die Konfiguration in vite.config.js importiere { svgBuilder } aus './src/plugins/svgBuilder'; exportiere Standard-DefineConfig({ Plugins: [svgBuilder('./src/icons/svg/')] // Alle SVG-Dateien unter src/icons/svg/ wurden hierher importiert, sie müssen nicht separat importiert werden}) Zusammenfassen Dies ist das Ende dieses Artikels zur Verwendung von SVG in Vue3+Vite-Projekten. Weitere relevante Inhalte zur Verwendung von SVG in Vue3+Vite finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: CSS-Pixel und Lösungen für verschiedene Probleme bei der Anpassung mobiler Bildschirme
>>: So verwenden Sie die Shell, um Batchvorgänge auf mehreren Servern auszuführen
Welche Produkte möchten Sie erwähnen? Vor kurzem ...
OOM steht für „Out Of Memory“, was so viel bedeut...
1. Grundlegende Verwendung Es kann über den Mutat...
Heutzutage erfreuen sich mobile Geräte immer größ...
Die Lösung zum Vergessen des ursprünglichen MySQL...
Was ist ein MIME-TYP? 1. Zunächst müssen wir verst...
Beispiel für einen WeChat-Applet-Rechner. Zu Ihre...
Vorwort Ansicht ist ein sehr nützliches Datenbank...
Inhaltsverzeichnis 1. Array-Deduplizierung 2. Ded...
1. HTML-Tags immer schließen Im Quellcode der vor...
Um den Zeilenabstand von <p></p> festz...
Wir alle wissen, dass Docker-Container voneinande...
Veranstaltungsbeschreibung onactivate: Wird ausgel...
Typ ist das Steuerelement, das für die Eingabe und...
Der MySQL DECIMAL Datentyp wird zum Speichern exa...