vue如何将图片压缩成webp格式并用webpack打包

1 篇文章 0 订阅
1 篇文章 0 订阅

一.vue-cli将图片转化成webp格式

1.安装vue-webp-plugin

npm install --save vue-webp-plugin

2.配置webp-plugin(在main.js中插入下面代码)

import WebpPlugun from 'vue-webp-plugin';
Vue.use(WebpPlugun);

3.使用方法:
方法1:url可以为数组配合v-for使用,但是不能为数组单独使用

<img v-webp="url"/>
<script>
    export default {
        data() {
            return {
                url: require('static/home_top_bg.png')
            }
        }
    }
</script>

方法2:远程图片

<img v-webp="'https://h5.u51.com/99fenqi/vue//static/home_top_bg.png'"/>

方法3:设置背景图片

<div v-webp:bg="require('static/home_top_bg.png')"></div>

他帮你优先引入webp图片,如果没有webp图片就会加载jpg图片

二、用webpack将jpg图片打包一份为webp图片

1.下载webp-loader(已经有webp图片可以跳过这部直接webpack打包)

npm install webp-loader --save-dev   //webpack打包webp

2.找到webpack.base.conf.js文件配置loader(这是webpack的配置文件)
3.找到module 下的打包图片的loader(如下)
在这里插入图片描述
将png|jpe?g|删除然后另外创一个如下
在这里插入图片描述
代码:

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

然后npm run build 就可以了

下面说一下vue-webp-plugin的一些坑和用法(可跳过)

在只用过程中,url可以为数组,但只限于v-for使用如下

<div class="foot">
          <div class="foot2" v-for="(item,index) in items1" :key="index">
            <img :src="item.src" alt />
          </div>
<script>
data() {//此处省略了很多代码
    return {
    items1:[]//存储图片路径
    }
    },
    mounted(){//通过mounted批量插入图片路径,这样就不用一个一个定义
    let arr = this.items1;
    for(let i = 0;i<9;i++){
    arr[i].src = require('../../image/'+(i+1)+'.jpg');//插入items1 9张图片路径
	}
}
</script>

上面是正确的用法,但是用如下就会报错

<div class="foot">
          <div class="foot2">
            <img :src="item[0]" alt />//这里没用v-for
          </div>
<script>
data() {//此处省略了很多代码
    return {
    items1:[]//存储图片路径
    }
    },
    mounted(){//通过mounted批量插入图片路径,这样就不用一个一个定义
    let arr = this.items1;
    for(let i = 0;i<9;i++){
    arr[i] = require('../../image/'+(i+1)+'.jpg');//插入items1 9张图片路径
	}
}
</script>

你会发现会报错,由于vue-webp-plugin的作者没做数组兼容,所以只能通过v-for配合数组使用,而单独使用的时候只能单独定义图片路径

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要让webpack能够打包.vue文件,我们需要使用vue-loader来解析.vue文件。首先,我们需要安装vue-loader和vue-template-compiler这两个依赖项。可以使用以下命令来安装它们: ``` npm install vue-loader vue-template-compiler -D ``` 安装完后,我们需要在webpack.config.js中添加相应的配置。首先,我们需要使用vue-loader来处理.vue文件。在module.rules数组中添加以下配置: ```javascript module: { rules: [ // ...其他规则 { test: /\.vue$/, loader: 'vue-loader' } ] } ``` 接下来,我们还需要配置resolve.extensions选项,以便webpack能够识别.vue文件。在resolve.extensions数组中添加'.vue',例如: ```javascript resolve: { extensions: ['.js', '.vue', '.json'] } ``` 最后,我们还需要添加HtmlWebpackPlugin插件来处理html文件。可以使用以下命令来安装它: ``` npm install html-webpack-plugin -D ``` 然后,在webpack.config.js中添加以下配置: ```javascript const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { // ...其他配置 plugins: [ // ...其他插件 new HtmlWebpackPlugin({ template: path.resolve(__dirname, './public/index.html') }) ] }; ``` 这样,webpack就能够正确地解析.vue文件并打包vue工程了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用webpack打包vue项目](https://blog.csdn.net/qq_42750982/article/details/124202782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [webpack打包Vue项目](https://blog.csdn.net/duxiaoxie123/article/details/116274852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值