日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

webpack结合reactjs、vuejs项目中图片处理

發(fā)布時間:2025/5/22 vue 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webpack结合reactjs、vuejs项目中图片处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這篇文章主要整理一下自己在使用 webpack 結(jié)合 vuejs 或 reactjs 開發(fā)過程中圖片的處理方法。

我的需求

項目打包之后(假定輸出目錄為 dist),除了 index.html,將所有的靜態(tài)資源上傳至 cdn,而并非打包之后所有靜態(tài)資源都在應(yīng)用服務(wù)器上。

index.html 中的圖片

因為是 SPA,模版頁面唯一要處理的圖片就是 favicon,這個資源在 IE 10 及以下瀏覽器只需要在 dist 根目錄下存在 favicon.icon 文件(名稱、后綴固定)即可,這種方式已經(jīng)廢棄,更好的做法是使用 link 標(biāo)簽引用,如:

<link rel="icon" sizes="192x192" href="/path/to/icon.png"> 復(fù)制代碼

處理這個圖片,我嘗試了三個方法:

1.html-webpack-plugin 的 favicon 屬性配置

不適合我。

它會將文件輸出至 dist 根目錄下,與 index.html 同級,引用的是本地圖片,而非 cdn 圖片。

2.favicons-webpack-plugin

不適合我。

很強大,能根據(jù)你給的圖片,生成所有類型的 icon 圖標(biāo),問題有兩個:首先是依賴了 phantomjs,墻外的站點,你懂得;再者引用的依舊是本地圖片。

組件實現(xiàn)

適合我。

vuejs 的 vue-head 組件,reactjs 的 react-helmet 組件,可以配置 link 方式的 favicon。圖片打包上傳 cdn 之后,頁面的圖片地址也為 cdn 地址。

其它

如果你的模版頁面有其他諸如 src 圖片引用,可參考 html-withimg-loader

頁面 Head 大全

vuejs 項目中圖片處理

前提:使用 vue-loader v15,webpack 配置好 url-loader 和 alias:

module.exports = {// ...其他配置modules: {rules: [{test: /\.(jpe?g|png|gif)(\?.*)?$/,use: 'url-loader?limit=1024&name=statics/img/[name]-[hash:5].[ext]',exclude: /node_modules/,},]},resolve: {alias: {Images: path.resolve('public', 'statics', 'img'),},},// ...其他配置 } 復(fù)制代碼

template 中使用

<img src="~Images/logo.png"> <img :src="require('Images/logo.png')"> // 注意 v-bind 復(fù)制代碼

有個問題我目前沒有解決(精簡代碼),還請大神指教:

// 無效,提示無法找到這個資源 <img :src="require(`${img}`)">data() {img: 'Images/logo.png' } 復(fù)制代碼// 有效 <img :src="require(`Images/${img}`)">data() {img: 'logo.png' } 復(fù)制代碼

已解決,官網(wǎng)對 require 的說明: A context is created if your request contains expressions, so the exact module is not known on compile time.

樣式表中使用

貌似無法使用 alias,只能使用 ~ 和相對路徑:

body {background: url(Images/logo.png); // alias,錯誤background: url(/Images/logo.png); // 有效,但是引用本地文件background: url(~Images/logo.png);background: url(../../statics/img/logo.png);background: url(./../../statics/img/logo.png); } 復(fù)制代碼

以 . 開頭,將會被看作相對的模塊依賴,并按照你的本地文件系統(tǒng)上的目錄結(jié)構(gòu)進行解析。

reactjs 中圖片處理

前提:webpack 配置好 url-loader 和 alias

使用

不管是組件中還是樣式表中,都可以使用 alias 和相對路徑:

require('Images/logo.png'); require('../../statics/img/logo.png'); require('./../../statics/img/logo.png'); 復(fù)制代碼body {background: url(Images/logo.png);background: url(../../statics/img/logo.png);background: url(./../../statics/img/logo.png); } 復(fù)制代碼

最后

./ 可有可無,相對路徑是以當(dāng)前的文件為基礎(chǔ),注意 ../ 層數(shù)問題;不要以 / 開頭,因為最終都是引用的本地圖片。 如有謬誤,懇請斧正。

轉(zhuǎn)載于:https://juejin.im/post/5b359656e51d4558d9235f1f

總結(jié)

以上是生活随笔為你收集整理的webpack结合reactjs、vuejs项目中图片处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。