Vue 3 Vite – In Echtzeit aktualisierte Bildlinks
P粉511749537
2023-08-27 22:32:33
<p>Ich verwende Vue 3 und Vite. Nachdem ich die Produktion in Vite aufgebaut hatte, stieß ich auf ein Problem mit dynamischem IMG SRC. Es gibt kein Problem mit static img src. </p>
<pre class="brush:php;toolbar:false;"><img src="/src/assets/images/my-image.png" alt="Image" class="logo"/>< ;/pre>
<p>Es funktioniert in beiden Fällen einwandfrei: im Entwicklungsmodus und nach einem Vite-Build. Aber ich habe einige Bildnamen in einer dynamisch geladenen Datenbank gespeichert (Menüsymbole). In diesem Fall muss ich den Pfad so schreiben: </p>
<pre class="brush:php;toolbar:false;"><img :src="'/src/assets/images/' + menuItem.iconSource" /></pre>
<p> (menuItem.iconSource enthält den Namen des Bildes, z. B. „my-image.png“).
In diesem Fall funktioniert es, wenn die Anwendung im Entwicklungsmodus ausgeführt wird, jedoch nicht nach einem Produktions-Build. Wenn Vite die Anwendung für die Produktion erstellt, ändert sich der Pfad (alle Assets werden im Ordner <code>_assets</code> abgelegt). Statische Bildquellen werden vom Vite-Build verarbeitet und die Pfade werden entsprechend geändert, zusammengesetzte Bildquellen jedoch nicht. Es nimmt einfach <code>/src/assets/images/</code> als Konstante und ändert es nicht (wenn die Anwendung 404 nicht gefunden für das Bild /src/assets/images/my-image.png ausgibt, Ich kann es im Netzwerkmonitor sehen)).
Ich versuche eine Lösung zu finden und jemand hat vorgeschlagen, <code>require()</code> zu verwenden, bin mir aber nicht sicher, ob vite es verwenden kann. </p>
2022 年更新:Vite 3.0.9 + Vue 3.2.38
动态src绑定的解决方案:
1。使用静态 URL
2。使用动态 URL 和相对路径
3.具有动态 URL 和绝对路径
由于汇总限制,所有导入都必须相对于导入文件开始,并且不应以变量开始。
您必须将别名
@/
替换为/src
2022年答案:Quick 2.8.6 + Vue 3.2.31
以下是对我来说适用于本地和生产构建的方法:
请注意,它不适用于 SSR
Vite 文档:新网址