欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

webpack配置打包后圖片路徑出錯(cuò)的解決

 更新時(shí)間:2018年04月26日 13:53:29   作者:我來自伯納烏  
本篇文章主要介紹了webpack配置打包后圖片路徑出錯(cuò)的解決,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

問題

項(xiàng)目在開發(fā)環(huán)境下工作正常,當(dāng)打包后圖片不見了,檢查元素后發(fā)現(xiàn)路徑出錯(cuò)了。

圖片路徑是這樣:background: url(/static/img/bg_camera_tip.bd37151.png),但該路徑下文件并不存在。

打包后文件目錄如下:


可以看到背景圖片的路徑應(yīng)該是../../static而實(shí)際卻是/static,找到原因后就好解決了

方法一

查看build目錄下webpack.base.conf.js的配置,圖片文件會(huì)經(jīng)過url-loader處理。

 module: {
  rules: [
   ...
   {
    test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
    loader: 'url-loader',
    options: {
     limit: 10000,
     name: utils.assetsPath('img/[name].[hash:7].[ext]')
    }
   },
   ...
  ]
 }

它的作用是當(dāng)文件大小小于limit限制時(shí)會(huì)返回一個(gè)base64串,其實(shí)就是把圖片資源編碼為base64串放在CSS文件里,這樣就可以減少一次網(wǎng)絡(luò)請(qǐng)求,因?yàn)槊恳粡垐D片都是需要從服務(wù)端去下載的。但是如果文件太大了就會(huì)導(dǎo)致base64串很長,那放在CSS文件里面就會(huì)導(dǎo)致文件很大,CSS的文件下載時(shí)間變長,就得不償失了,所以會(huì)有一個(gè)limit參數(shù),在這個(gè)范圍內(nèi)的才會(huì)被轉(zhuǎn)成base64串,它的單位是字節(jié)。對(duì)于這個(gè)問題,該loader還提供了一個(gè)publicPath參數(shù),目的是修改引用的圖片地址,默認(rèn)是當(dāng)前路徑,那直接改它就可以了,即在options節(jié)點(diǎn)下添加一個(gè)參數(shù)publicPath: '../../'。

 module: {
  rules: [
   ...
   {
    test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
    loader: 'url-loader',
    options: {
     limit: 10000,
     publicPath: '../../', //你實(shí)際項(xiàng)目的引用地址前綴
     name: utils.assetsPath('img/[name].[hash:7].[ext]')
    }
   },
   ...
  ]
 }

方法二

webpack.base.conf.js里還有一條規(guī)則,每一個(gè)vue文件都會(huì)經(jīng)過vueLoaderConfig處理

 module: {
  rules: [
   {
    test: /\.vue$/,
    loader: 'vue-loader',
    options: vueLoaderConfig
   },
   ...
  ]
 }

vueLoaderConfig位于build/vue-loader.conf.js,它又調(diào)用了build/utils.js的cssLoaders的方法。

  if (options.extract) {
   return ExtractTextPlugin.extract({
    use: loaders,
    fallback: 'vue-style-loader'
   })
  }

如果是生產(chǎn)環(huán)境options.extract值為true,會(huì)調(diào)用這個(gè)ExtractTextPlugin插件做處理,它的作用是抽離項(xiàng)目中引用的樣式文件到一個(gè)獨(dú)立的CSS文件中,這樣就可以一次加載所有的CSS文件,相當(dāng)于CSS文件并行加載,可以減少網(wǎng)絡(luò)請(qǐng)求次數(shù),更多優(yōu)點(diǎn)及使用可以查看ExtractTextWebpackPlugin?;氐竭@個(gè)問題,它還有一個(gè)參數(shù)就是publicPath,可以覆蓋所指定的loader的publicPath配置,那么就跟前面的配置一樣,可以給所有的loader統(tǒng)一配置引用文件的路徑地址。

另外這里的user:loader實(shí)際上是返回一系列的loader的集合,cssLoaders的返回是

 return {
  css: generateLoaders(),
  postcss: generateLoaders(),
  less: generateLoaders('less'),
  sass: generateLoaders('sass', { indentedSyntax: true }),
  scss: generateLoaders('sass'),
  stylus: generateLoaders('stylus'),
  styl: generateLoaders('stylus')
 }

這也就是即便你沒有在webpack.base.conf.js中配置sass-loader也能使用SASS語法的原因。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • javascript 數(shù)組(list)添加/刪除的實(shí)現(xiàn)

    javascript 數(shù)組(list)添加/刪除的實(shí)現(xiàn)

    這篇文章主要介紹了javascript 數(shù)組(list)添加/刪除,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • js精度溢出解決方案

    js精度溢出解決方案

    一般參數(shù)值不能超過16位。如果超出16都是用0替代,導(dǎo)致我們查詢不到自己想要的結(jié)果,本文將介紹如何處理這種現(xiàn)象
    2012-12-12
  • 分享JavaScript的?3?種工廠模式的用法

    分享JavaScript的?3?種工廠模式的用法

    這篇文章主要分享JavaScript的?3?種工廠模式,工廠模式是設(shè)計(jì)模式中最常用的設(shè)計(jì)模式之一,這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式,下文關(guān)于工廠模式的更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • Typescript使用修飾器混合方法到類的實(shí)例

    Typescript使用修飾器混合方法到類的實(shí)例

    這篇文章主要介紹了Typescript使用修飾器混合方法到類的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • JS解決ie6下png透明的方法實(shí)例

    JS解決ie6下png透明的方法實(shí)例

    解決ie6下png透明的問題想必前端都比較清楚,雖然有很多方法,但是我覺得用JS還是最省事的方法,不管是圖片還是背景圖片都OK。
    2013-08-08
  • JS面向?qū)ο缶幊獭狤S6 中class的繼承用法詳解

    JS面向?qū)ο缶幊獭狤S6 中class的繼承用法詳解

    這篇文章主要介紹了JS面向?qū)ο缶幊獭狤S6 中class的繼承用法,結(jié)合實(shí)例形式詳細(xì)分析了ES6中class繼承的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • 微信小程序下拉框功能的實(shí)例代碼

    微信小程序下拉框功能的實(shí)例代碼

    這篇文章主要介紹了微信小程序下拉框功能的實(shí)例代碼,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • JavaScript 基礎(chǔ)表單驗(yàn)證示例(純Js實(shí)現(xiàn))

    JavaScript 基礎(chǔ)表單驗(yàn)證示例(純Js實(shí)現(xiàn))

    下面小編就為大家?guī)硪黄狫avaScript 基礎(chǔ)表單驗(yàn)證示例(純Js實(shí)現(xiàn))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 讓微信小程序支持ES6中Promise特性的方法詳解

    讓微信小程序支持ES6中Promise特性的方法詳解

    微信更新自家的Web開發(fā)工具后無法使用原生 Promise,下面這篇教程教你引入第三方庫來使用 Promise,文中通過圖文介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • JavaScript提升機(jī)制Hoisting詳解

    JavaScript提升機(jī)制Hoisting詳解

    這篇文章主要介紹了JavaScript提升機(jī)制Hoisting詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論