Vue怎麼替換本地圖片
Vue取代本機圖片的方法:1、透過「」將圖片轉為base64格式;2、使用import引入圖片;3、使用require動態載入;4、引入「publicPath」並且將其拼接在路徑中,實現引入路徑的動態變動即可。
本教學操作環境:Windows10系統、vue3版、DELL G3電腦
Vue怎麼取代本機圖片?
vue動態載入本地圖片
今天遇到一個在vue檔案中引入本地圖片的問題,於是有了這篇文章。
通常,我們的一個img標籤在html中是這麼寫的:
<img src="../images/demo.png">
這種寫法只能引用相對路徑下的圖片。不能使用絕對路徑。使用絕對路徑的話,這類資源將會直接被拷貝,而不會經過 webpack 的處理。
如果src是變數的話,我們一般會在data中定一個變數src進行動態綁定。
<img :src="src">//data中定义变量src data() { return { src: '../images/demo.png' } }
然而這時候,會發現這個時候圖片並沒有被加載出來,圖片沒有顯示出來,透過查看發現這張圖片的地址顯示../images/ demo.png
,也就是說透過v-bind形式綁定的相對路徑不會被webpack的file-loader
處理,只會做簡單的文字替換。
那怎麼辦呢?
解決方法
1、將圖片轉**base64
**格式
<img src="data:image/png;base64,iVBYKIGloxxxxxxxxxxxxxxxxxxx...">
一般圖片比較小的可以這麼做,例如圖示icon等,大小一般在10KB以內的。
2、使用**import
**引入圖片
<img :src="src">//使用import引入 import img from '../images/demo.png' //data中定义变量src data() { return { src: img } }
3.使用**require
**動態載入
<img :src="src">//data中定义变量src data() { return { src: require('../images/demo.png') } }
4、引入**publicPath
**並且將其拼接在路徑中,實現引入路徑的動態變動
<img :src="publicPath + 'images/demo.jpg'" alt=""> // √ // 编译后:<img src="/foo/images/demo.jpg" alt=""><script>export default:{ data(){ return { publicPath: process.env.BASE_URL, } },}</script>
在vue.config.js
中設定publicPath
路徑:
//vue.config.jsmodule.exports = { publicPath:'/foo/', ...}
结论
静态资源可以通过两种方式进行处理:
- 在 JavaScript
被导入
或在 template/CSS 中通过相对路径
被引用。这类引用会被 webpack 处理。
- 放置在
public
目录下或通过绝对路径
被引用。这类资源将会直接被拷贝,而不会经过 webpack 的处理。
原理
从相对路径导入
当你在 JavaScript、CSS 或 *.vue
文件中使用相对路径 (必须以 .
开头) 引用一个静态资源时,该资源将会被包含进入 webpack 的依赖图中。
在其编译过程中,所有诸如 <img src="...">
、background: url(...)
和 CSS @import
的资源 URL 都会被解析为一个模块依赖。
用绝对路径引入时,路径读取的是public
文件夹中的资源,任何放置在 public
文件夹的静态资源都会被简单的复制到编译后的目录中,而不经过 webpack特殊处理。
当你的应用被部署在一个域名的根路径上时,比如http://www.abc.com/
,此时这种引入方式可以正常显示但是如果你的应用没有部署在域名的根部,那么你需要为你的 URL 配置 publicPath 前缀,publicPath
是部署应用包时的基本 URL,需要在 vue.config.js
中进行配置。
扩展
关于vue file-loader vs url-loader
如果我们希望在页面引入图片(包括img的src和background的url)。当我们基于webpack进行开发时,引入图片会遇到一些问题。
其中一个就是引用路径的问题。拿background样式用url引入背景图来说,我们都知道,webpack最终会将各个模块打包成一个文件,因此我们样式中的url路径是相对入口html页面的,而不是相对于原始css文件所在的路径的。这就会导致图片引入失败。这个问题是用file-loader
解决的,file-loader可以解析项目中的url引入(不仅限于css),根据我们的配置,将图片拷贝到相应的路径,再根据我们的配置,修改打包后文件引用路径,使之指向正确的文件。
另外,如果图片较多,会发很多http请求,会降低页面性能。这个问题可以通过url-loader解决。url-loader会将引入的图片编码,生成dataURl。相当于把图片数据翻译成一串字符。再把这串字符打包到文件中,最终只需要引入这个文件就能访问图片了。当然,如果图片较大,编码会消耗性能。因此url-loader提供了一个limit参数,小于limit字节的文件会被转为DataURl,大于limit的还会使用file-loader进行copy。
url-loader和file-loader是什么关系呢?简答地说,url-loader封装了file-loader。url-loader不依赖于file-loader,即使用url-loader时,只需要安装url-loader即可,不需要安装file-loader,因为url-loader内置了file-loader。通过上面的介绍,我们可以看到,url-loader工作分两种情况:1.文件大小小于limit参数,url-loader将会把文件转为DataURL;2.文件大小大于limit,url-loader会调用file-loader进行处理,参数也会直接传给file-loader。因此我们只需要安装url-loader即可。
原文链接:https://www.cnblogs.com/weizaiyes/p/7461967.html
关于background url引入图片时
按照上面理论,如果我采用相对路径的方式引入图片的话,webpack会对其require处理。
background: url('./iphonexs.png') 0 0 no-repeat;
实际上确实如此,我看到页面的背景变成:
background: url(/resources/dist/images/iphonexs.a25bee7.png) 0 0 no-repeat;
这是根据url-loader的配置处理的结果。【推荐学习:《vue视频教程》】
或者采用动态style
的方式:
<div :style="{'background': 'url(' + require('./iphonexs.png') + ') 0 0 no-repeat'}"></div>
以上是Vue怎麼替換本地圖片的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

在 Vue.js 中引用 JS 文件的方法有三種:直接使用 <script> 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 <router-link to="/"> 組件window.history.back(),方法選擇取決於場景。

Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。
