Heim  >  Artikel  >  Web-Frontend  >  Warum schlägt das dynamische Laden von Bildern mit Vue.js und Webpack fehl?

Warum schlägt das dynamische Laden von Bildern mit Vue.js und Webpack fehl?

DDD
DDDOriginal
2024-11-18 10:50:02712Durchsuche

Why Does Dynamic Image Loading Fail with Vue.js and Webpack?

Probleme beim Laden dynamischer Bilder in Vue.js mit Webpack

Beim Erstellen von Webanwendungen mit Vue.js und Webpack kann es manchmal zu Problemen bei der Anzeige dynamischer Bilder kommen stellen Herausforderungen dar. Ein häufiges Szenario besteht darin, dass Bilddateinamen in einer Variablen gespeichert werden und an einen Basispfad angehängt werden müssen, um eine vollständige Bildquelle zu generieren.

Ein Entwickler ist auf ein Problem gestoßen, bei dem der folgende Code dazu gedacht war, Bilder dynamisch anzuzeigen basierend auf einer berechneten Eigenschaft, fehlgeschlagen:

<div class="col-lg-2" v-for="pic in pics">
   <img v-bind:src="'../assets/' + pic + '.png'" v-bind:alt="pic">
</div>

Interessanterweise funktionierte ein ähnlicher Ansatz mit einem statischen Bildpfad wie erwartet:

<img src="../assets/dog.png" alt="dog">

Das Rätsel lag im Unterschied zwischen den beiden Ansätzen . Durch die Verwendung eines statischen Pfads wird Webpack direkt angewiesen, das Image in den Build einzubinden und so seine Verfügbarkeit zur Laufzeit sicherzustellen. Der dynamische Ansatz basiert jedoch darauf, dass der Image-Pfad zur Laufzeit generiert wird, was Webpack während des Build-Prozesses nicht vorhersehen kann. Folglich ist das Bild nicht im Bundle enthalten, was zu einer fehlenden Datei führt.

Um dieses Problem zu beheben, griff der Entwickler auf die Methode require.context() zurück, die eine Möglichkeit bietet, Module oder Dateien dynamisch zu laden innerhalb eines bestimmten Kontextes. Durch die Verwendung des folgenden Codes:

getImgUrl(pet) {
    var images = require.context('../assets/', false, /\.png$/)
    return images('./' + pet + ".png")
}

und die Aktualisierung des HTML wie folgt:

<div class="col-lg-2" v-for="pic in pics">
   <img :src="getImgUrl(pic)" v-bind:alt="pic">
</div>

hat der Entwickler den gewünschten Effekt erzielt. require.context() ermöglichte es ihnen, die Bilddatei basierend auf dem Wert der pic-Eigenschaft dynamisch zu laden, und Webpack fügte das erforderliche Bild in das Bundle ein.

Das obige ist der detaillierte Inhalt vonWarum schlägt das dynamische Laden von Bildern mit Vue.js und Webpack fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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