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
React ist eine Open-Source-JavaScript-Bibliothek,...
Dieser Artikel beschreibt, wie Sie mit der lokale...
Inhaltsverzeichnis 1. innodb_buffer_pool_size 2. ...
Docker ist in CE und EE unterteilt. Die CE-Versio...
In diesem Artikel wird der spezifische JavaScript...
Inhaltsverzeichnis Undo-Protokoll Erstellung und ...
In diesem Artikelbeispiel wird der spezifische Co...
Hintergrund Als ich vor einigen Tagen Paging in M...
1. Über den Dateiserver Wenn Sie in einem Projekt...
Grund: MySQL 5.7.5 und höher implementiert die Er...
Ergebnisse erzielen Implementierungscode html <...
Phänomen Starten Sie den Docker-Container docker ...
Die CSS3-Kategoriemenüeffekte sind wie folgt: HTM...
Inhaltsverzeichnis 1. Verwenden Sie den Befehl „r...
Vorwort Unter dem Einfluss einiger CSS-Interaktio...