<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        webpack踩坑之路圖片的路徑與打包

        來源:懂視網 責編:小采 時間:2020-11-27 22:31:05
        文檔

        webpack踩坑之路圖片的路徑與打包

        webpack踩坑之路圖片的路徑與打包:剛開始用webpack的同學很容易掉進圖片打包這個坑里,比如打包出來的圖片地址不對或者有的圖片并不能打包進我們的目標文件夾里(bundle)。下面我們就來分析下在webpack項目中圖片的應用場景。 在實際生產中有以下幾種圖片的引用方式: 1. HTML文件中im
        推薦度:
        導讀webpack踩坑之路圖片的路徑與打包:剛開始用webpack的同學很容易掉進圖片打包這個坑里,比如打包出來的圖片地址不對或者有的圖片并不能打包進我們的目標文件夾里(bundle)。下面我們就來分析下在webpack項目中圖片的應用場景。 在實際生產中有以下幾種圖片的引用方式: 1. HTML文件中im

        剛開始用webpack的同學很容易掉進圖片打包這個坑里,比如打包出來的圖片地址不對或者有的圖片并不能打包進我們的目標文件夾里(bundle)。下面我們就來分析下在webpack項目中圖片的應用場景。

        在實際生產中有以下幾種圖片的引用方式:

        1. HTML文件中img標簽的src屬性引用或者內嵌樣式引用

        <img src="photo.jpg" />
        <div style="background:url(photo.jpg)"></div>

        2. CSS文件中的背景圖等設置

        .photo {
         background: url(photo.jpg);
        }

        3. JavaScript文件中動態添加或者改變的圖片引用

        var imgTempl = '<img src="photo.jpg" />';
        document.body.innerHTML = imgTempl;

        4. ReactJS中圖片的引用

        import React from 'react';
        import ReactDOM from 'react-dom';
        
        class App extends React.Component {
         render() {
         return (<img src='photo.jpg' />);
         }
        }
        
        ReactDom.render(<App />, document.querySelector('#container'));
        

        url-loader

        在 webpack 中引入圖片需要依賴 url-loader 這個加載器。

        安裝:

        npm install url-loader --save-dev

        當然你可以將其寫入配置中,以后與其他工具模塊一起安裝。

        在 webpack.config.js 文件中配置如下:

        module: {
          loaders: [
            {
              test: /\.(png|jpg)$/,
              loader: 'url-loader?limit=8192'
            }
          ]
        } 

        test 屬性代表可以匹配的圖片類型,除了 png、jpg 之外也可以添加 gif 等,以豎線隔開即開。

        loader 后面 limit 字段代表圖片打包限制,這個限制并不是說超過了就不能打包,而是指當圖片大小小于限制時會自動轉成 base64 碼引用。上例中大于8192字節的圖片正常打包,小于8192字節的圖片以 base64 的方式引用。

        url-loader 后面除了 limit 字段,還可以通過 name 字段來指定圖片打包的目錄與文件名:

        module: {
          loaders: [
            {
              test: /\.(png|jpg)$/,
              loader: 'url-loader?limit=8192&name=images/[hash:8].[name].[ext]'
            }
          ]
        }
        
        

         上例中的 name 字段指定了在打包根目錄(output.path)下生成名為 images 的文件夾,并在原圖片名前加上8位 hash 值。

        例:工程目錄如下

        在 main.css 中引用了同級 images 文件夾下的 bg.jpg 圖片

        background-image: url(./images/bg.jpg);

        通過之前的配置,使用 $ webpack 命令對代碼進行打包后生成如下目錄

        打包目錄中,css 文件和 images 文件夾保持了同樣的層級,可以不做任務修改即能訪問到圖片。區別是打包后的圖片加了 hash 值,bundle.css 文件里引入的也是有hash值的圖片。

        background-image: url(images/f593fbb9.bg.jpg);

        (上例中,使用了單獨打包css的技術,只是為了方便演示)

        publicPath

        output.publicPath 表示資源的發布地址,當配置過該屬性后,打包文件中所有通過相對路徑引用的資源都會被配置的路徑所替換。

        output: {
          path: 'dist',
          publicPath: '/assets/',
          filename: 'bundle.js'
        }

        main.css

        background-image: url(./images/bg.jpg);

        bundle.css

        background-image: url(/assets/images/f593fbb9.bg.jpg);

        該屬性的好處在于當你配置了圖片 CDN 的地址,本地開發時引用本地的圖片資源,上線打包時就將資源全部指向 CDN 了。

        但是要注意,如果沒有確定的發布地址不建議配置該屬性,否則會讓你打包后的資源路徑很混亂。

        JS中的圖片

        初用 webpack 進行項目開發的同學會發現:在 js 或者 react 中引用的圖片都沒有打包進 bundle 文件夾中。

        正確寫法應該是通過模塊化的方式引用圖片路徑,這樣引用的圖片就可以成功打包進 bundle 文件夾里了

        js

        var imgUrl = require('./images/bg.jpg'),
         imgTempl = '<img src="'+imgUrl+'" />';
        document.body.innerHTML = imgTempl;

        react

        render() {
         return (<img src={require('./images/bg.jpg')} />);
        }

        HTML中的圖片

        由于 webpack 對 html 的處理不太好,打包 HTML 文件中的圖片資源是相對來說最麻煩的。這里需要引用一個插件—— html-withimg-loder

        $ npm install html-withimg-loader --save-dev

        webpack.config.js 添加配置

        module: {
          loaders: [
            {
              test: /\.html$/,
              loader: 'html-withimg-loader'
            }
          ]
        }
        
        

        在 bundle.js 中引用 html 文件

        import '../index.html';

        這樣 html 文件中的圖片就可以被打包進 bundle 文件夾里了。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        webpack踩坑之路圖片的路徑與打包

        webpack踩坑之路圖片的路徑與打包:剛開始用webpack的同學很容易掉進圖片打包這個坑里,比如打包出來的圖片地址不對或者有的圖片并不能打包進我們的目標文件夾里(bundle)。下面我們就來分析下在webpack項目中圖片的應用場景。 在實際生產中有以下幾種圖片的引用方式: 1. HTML文件中im
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 美女网站免费福利视频| 一级特黄a免费大片| **aaaaa毛片免费同男同女| 亚洲国产精品无码久久一区二区| 国产黄片不卡免费| 亚洲国产午夜福利在线播放| 美女黄频免费网站| 亚洲成AⅤ人影院在线观看| 美女羞羞免费视频网站| 亚洲А∨精品天堂在线| www免费黄色网| 亚洲午夜福利AV一区二区无码| 国产在线精品观看免费观看| 亚洲精品国偷自产在线| 久久不见久久见免费视频7 | 国产成人无码精品久久久久免费 | 无码国产精品一区二区免费模式| 亚洲国产人成在线观看69网站 | 亚洲AV香蕉一区区二区三区| 国产精品久免费的黄网站| 日韩在线一区二区三区免费视频| 亚洲国产精品一区二区九九| 久久久久久免费一区二区三区| 中文字幕亚洲免费无线观看日本| 思思re热免费精品视频66| 亚洲国产精品成人AV在线 | 中文字幕亚洲精品资源网| 成人片黄网站色大片免费| 香港特级三A毛片免费观看| 亚洲情综合五月天| 久久久高清免费视频| 日本永久免费a∨在线视频| 亚洲国产精品VA在线看黑人| 大地资源免费更新在线播放| 成人免费网站视频www| 亚洲美女视频免费| heyzo亚洲精品日韩| 毛片无码免费无码播放| 老司机午夜精品视频在线观看免费 | 99久久免费国产香蕉麻豆| 国产精品亚洲专区无码不卡|