第四節(jié):Webpack打包圖片資源

打包圖片資源說明

  1. 需要使用到url-loader處理圖片
  2. 注意url-loader依賴于file-loader,因此安裝時注意.兩個都要安裝


1. 處理在樣式文件中引入的圖片

說明:

  1. 樣式中引入圖片就是通過background-image屬性來引入背景圖片
  2. 接來下我們以在.less文件中為例了解webpack如何打包圖片資源


1.1 在less中引入圖片

創(chuàng)建less文件,開發(fā)樣式并使用背景圖片

代碼如下:

#box1{
    width: 100px;
    height: 100px;
    background-image:url("../img/vue.jpg");
    background-repeat: no-repeat;
    background-size: 100% ,100%;
}

#box2{
    width: 200px;
    height: 200px;
    background-image:url("../img/react.jpg");
    background-repeat: no-repeat;
    background-size: 100% ,100%;
}
#box3{
    width: 300px;
    height: 400px;
    background-image:url("../img/angular.png");
    background-repeat: no-repeat;
    background-size: 100% ,100%;
}


1.2 配置webpack

webpack配置文件webpack.config.js中配置打包圖片的loader

配置代碼如下:

const HtmlWebpackPlugin = require("html-webpack-plugin")
const {resolve} = require("path")


module.exports = {
    entry: "./src/main.js",
    output: {
        filename : "bundle.js",
        path: resolve(__dirname, 'dist')
    },
    module: {
        rules:[
            {
                test: /\.less$/,
                // 多個loader, 使用use配置 
                use:["style-loader","css-loader","less-loader"]
            },
            {
                test: /\.(jpg|png|gif)$/,
                // 使用一個loader處理, 用loader配置
                // 注意url-loader依賴file-loader
                // 因此兩個loader都需要安裝
                loader: "url-loader",

            }
        ]
    },
    plugins: [
        new HtmlWebpackPlugin({
            template: "./src/index.html"
        })
    ],
    mode:"development"
}

示例說明:

  1. 在需要使用多個loader處理文件時,需要使用use配置項
  2. 如果只需要一個loader處理文件,則可以使用loader配置項配置


注意事項:

  1. 如果控制臺提示不能識別id選擇器的#號,或者class選擇器的.
  2. 我們就需要在導入lesscss文件是,將loader配置進去
  3. 例如import "style-loader!css-loader!./index.less"


2. 圖片打包配置

2.1 上節(jié)示例結(jié)果分析
  1. 打包后,發(fā)現(xiàn)所有的圖片都會打包成為base64圖片
  2. base64圖片的優(yōu)點: 減少服務請求次數(shù),減輕服務器壓力
  3. base64圖片的缺點: 圖片的體積會變大, 文件的加載速度會變慢
  4. 因此我們要綜合考慮, 體積比較小的圖片打包為base64,圖片太大的圖片,就不打包為base64

因此我們并不需要所有的圖片都打包為base64圖片,

我們要對url-loader進行配置.

低于設置大小的圖片打包為base64圖片, 大小超過的不打包為base64圖片


2.2 配置url-loader

通過options來配置圖片打包的loader

示例:

{
    test: /\.(jpg|png|gif)$/,
    // 使用一個loader處理, 用loader配置
    loader: "url-loader",
    options:{
        // 配置圖片打包loader 
        // 圖片大小低于8kb的會打包為base64格式,,超過的處理為文件格式
        limit: 8 * 1024
    }
}


2.3 配置打包后文件名的長度

上面的打包后發(fā)現(xiàn),圖片的名字都非常長,

我們也可以通過options配置圖片文件名的長度

{
    test: /\.(jpg|png|gif)$/,
    // 使用一個loader處理, 用loader配置
    loader: "url-loader",
    options:{
        // 配置圖片打包loader 
        // 圖片大小低于8kb的會打包為base64格式,,超過的處理為文件格式
        limit: 8 * 1024,

        // 給圖片進行重命名
        // [hash:8] 是取圖片打包的hash名的前8位
        // [ext] 取圖片原來的文件擴展名
        name: '[hash:8].[ext]'
    }
}


注意:

上面的配置只能處理CSS或者less等樣式文件中引入的圖片

默認不能處理html通過img標簽引入的圖片


3. 處理html文件引入的圖片

3.1 處理html文件引入圖片的說明

處理html文件中引入圖片的說明:

  1. 因為html文件時使用http-webpack-plugin插件將內(nèi)容插入到打包后的html文件中
  2. 所以我們在html文件中引入的圖片路徑在處理后不會發(fā)生改變
  3. 因此打包后html文件就找不到圖片,因此顯示不了圖片呢

故而我們需要對html文件進行打包配置


3.2 配置html文件的loader

通過html-loader處理html中引入的圖片

下載loader

$  yarn add html-loader -D

配置loader

{
    test: /\.html$/,
    // 使用html-loader處理html文件中引入的圖片
    // html-loader是專門處理img圖片,引入img,從而被url-loader處理
    loader: "html-loader",
}

注意: html-loader專門處理html文件中img標簽引入的圖片

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末详恼,一起剝皮案震驚了整個濱河市歉闰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌旷赖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幻碱,死亡現(xiàn)場離奇詭異必怜,居然都是意外死亡,警方通過查閱死者的電腦和手機葵硕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來贯吓,“玉大人懈凹,你說我怎么就攤上這事∏男常” “怎么了介评?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長尊沸。 經(jīng)常有香客問我威沫,道長,這世上最難降的妖魔是什么洼专? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任棒掠,我火速辦了婚禮,結(jié)果婚禮上屁商,老公的妹妹穿的比我還像新娘烟很。我一直安慰自己,他們只是感情好蜡镶,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布雾袱。 她就那樣靜靜地躺著,像睡著了一般官还。 火紅的嫁衣襯著肌膚如雪芹橡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天望伦,我揣著相機與錄音林说,去河邊找鬼。 笑死屯伞,一個胖子當著我的面吹牛腿箩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播劣摇,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼珠移,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起钧惧,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤暇韧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后浓瞪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锨咙,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年追逮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粹舵。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡钮孵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出眼滤,到底是詐尸還是另有隱情巴席,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布诅需,位于F島的核電站漾唉,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏堰塌。R本人自食惡果不足惜赵刑,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望场刑。 院中可真熱鬧般此,春花似錦、人聲如沸牵现。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞎疼。三九已至科乎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贼急,已是汗流浹背茅茂。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留竿裂,地道東北人玉吁。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像腻异,于是被迫代替她去往敵國和親进副。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354