美文网首页
webpack 图片处理和优化

webpack 图片处理和优化

作者: 暖A暖 | 来源:发表于2021-05-16 20:23 被阅读0次

本节我们来学习如何在 webpack 中处理和优化图片。前面我们讲过,webpack 中只有 JS 类型文件才能够被识别并直接打包,其他类型的文件,例如 CSS、JS、图片等,则需要通过特定的 loader 来进行加载打包。

而在实际项目中,我们也会经常用到图片,所以本节我们就来看一下如何在 webpack 中打包图片。

如何在webpack中打包图片

webpack 中打包图片要用到 file-loader 或者 url-loader 加载器,这两个加载器的功能基本一样,但是还是存在一些区别:

  • file-loader:能够根据配置项复制使用到的资源到构建之后的文件夹,并且能够更改对应的链接。
  • url-loader :包含 file-loader 的全部功能,并且能够根据配置将符合配置的文件转换成 Base64 方式引入,将小体积的图片 Base64 引入项目可以减少 http 请求,也是一个前端常用的优化方式。

下面我们使用 url-loader 为例,说明一下在 webpack 中打包图片的方法。

示例:

例如继续使用之前的 xkd_webpack 项目,在项目根目录下创建一个用于存放图片的 images 文件夹。然后在这个文件夹下面任意添加一张图片,例如img1.png

然后我们在 xkd.css 中使用这张图片,代码如下所示:

html{ 
    background: url("./images/img1.png") no-repeat center;
}

然后我们可以执行打包命令,但是此时会报一个错误,如下图所示:

这个错误告诉我们,需要使用一个 loader 来处理图片这种类型的文件。所以我们需要安装 url-loader 加载器,并在配置文件中添加相关配置。

安装url-loader

安装 url-loader 的命令很简单,如下所示:

npm install url-loader --save-dev

安装好后,我们需要在 webpack.config.js 文件中的 module.rules 数组中添加 url-loader 的相关配置,例如下面这段配置代码:

module:{
        rules:[
            {
                test: /\.(png|jpg|gif|svg)$/,
                use: 'url-loader'
            }
        ]
}

此时我们再次执行打包命令,就能成功进行打包啦。

虽然打包成功,但是我们会发现,图片 img1.png 打包后,图片名称发生了变化,变为了 85d4f87317b6c14d541b3e1bcd9d2662.png

如果我们希望在打包后,图片名称不变,并且能够添加到指定目录下,可以在 rules 中添加一个 options 属性,如下所示:

module:{
        rules:[
            {
                test: /\.(png|jpg|gif|svg)$/,
                use:[{
                    loader: 'url-loader',
                    options: {
                        name: 'images/[name].[ext]'
                    },
                }]
            }
        ]
}

这样我们执行打包命令后,会在dist 目录下生成一个 images 文件夹,文件夹中的就是打包好的图片,且图片名称和打包前保持不变。

图片优化

要优化图片其实就是控制图片的质量,压缩图片的大小。上面我们虽然成功将图片进行了打包,但是图片大小并没有变化。webpack 在进行打包时,会根据配置文件 webpack.config.js 中对 url-loaderlimit 大小设置来对图片进行处理,小于 limit 的图片转化成 base64 格式,其余不做操作。对于比较大的图片我们可以用 image-webpack-loader 来压缩图片。

示例:

首先安装 image-webpack-loader,命令如下所示:

npm install image-webpack-loader --save-dev

然后修改 webpack.config.js 中的配置,如下所示,执行打包命令后图片就会成功被压缩:

{
    test: /\.(png|jpg|gif|svg)$/,
    use: [
        {
            loader: 'url-loader',
            options: {
                limit: 10000,
                name: 'images/[name].[ext]'
            }
        },
        {
            loader:'image-webpack-loader',
            options: {
                bypassOnDebug: true,
            }
         }
    ]
}

链接:https://www.9xkd.com/

相关文章

  • webpack 图片处理和优化

    本节我们来学习如何在 webpack 中处理和优化图片。前面我们讲过,webpack 中只有 JS 类型文件才能够...

  • webpack 图片处理和优化

    本节我们来学习如何在 webpack 中处理和优化图片。前面我们讲过,webpack 中只有 JS 类型文件才能够...

  • iOS性能优化——图片加载和处理

    iOS性能优化——图片加载和处理 iOS性能优化——图片加载和处理

  • vue性能优化详解(二)

    前端路漫漫,优化无极限。本文主要从Webpack角度讲述vue性能优化。 1.Webpack 对图片进行压缩 如果...

  • webpack处理图片

    一:只处理图片地址 安装file-loader 配置rules,规则 所有配置 二 配置小于多少使用base64处...

  • 预处理器Loader

    html、css、模板、图片、字体等,webpack怎么处理呢loader赋予webpack可处理不同资源类型的能...

  • webpack起步(1)

    编译,打包,处理css,处理less,处理图片,启动日志显示,html打包规则webpack学习记录

  • 性能优化文章

    iOS性能优化——图片加载和处理 作者:落影loyinglin 【基本功】深入剖析Swift性能优化

  • 图片优化技巧

    1. 图片大小优化 使用imagemin,或imagemin-webpack-plugin插件 可使用渐进式图片(...

  • 前端通用性能优化总结

    一.图片优化 1.使用雪碧图(webpack和gulp都有对应插件自动转换成雪碧图),减少请求。2.压缩图片质量(...

网友评论

      本文标题:webpack 图片处理和优化

      本文链接:https://www.haomeiwen.com/subject/rcbrjltx.html