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
Inhaltsverzeichnis Matlab-Centroid-Algorithmus Da...
Verknüpfung: https://qydev.weixin.qq.com/wiki/ind...
Inhaltsverzeichnis Frage Reproduktion Implizite K...
So installieren Sie Flash unter Linux 1. Besuchen...
Dieser Artikel veranschaulicht anhand von Beispie...
2.1, MSI-Installationspaket 2.1.1、Installation Be...
Es ist sehr mühsam, eine virtuelle Maschine einzu...
Dieser Artikel veranschaulicht anhand von Beispie...
Wie erstelle ich mit HTML, CSS und JS einen einfa...
Der vollständige Name von Blog sollte Weblog sein...
Hintergrund CVE-2021-21972 Eine nicht authentifiz...
Vorwort Dieser Artikel stellt hauptsächlich die r...
Ohne weitere Umschweife werde ich den Code direkt...
Inhaltsverzeichnis Lösungsanalyse Scheibe Lebensl...
Speichern Sie den folgenden Code als Standard-Home...