Webpack 如何处理图片资源

阅读时长 6 min read

前端工程化技术的发展,使得前端项目的复杂度不断提升,其包含各种不同类型的文件。其中,图片资源在前端应用中占据了非常重要的位置。在这篇文章中,我们将会介绍 Webpack 在处理图片资源方面的相关技术。

Webpack 处理图片

在 Webpack 中,图片资源可以通过 url-loaderfile-loader 这两个 Loader 进行处理。这两个 Loader 安装后,可以在 Webpack 配置文件中加入以下的代码:

-- -------------------- ---- -------
-- -----------------

-------------- - -
  ------- -
    ------ -
      -
        ----- -------------------
        ---- -
          -
            ------- -------------
            -------- -
              ------ -----
              ----- ------------------------------
            -
          -
        -
      -
    -
  -
-

其中,test 表示需要处理的文件类型,use 表示使用什么 Loader 进行处理,这里我们使用了 url-loader,同时通过 options 对该 Loader 进行配置。

url-loader

url-loader 可以将图片转化为 DataURL,最终以 Base64 码的格式嵌入到 HTML、CSS 或 JS 文件中。这种方式有一个很显著的优点,就是可以减少 HTTP 请求的次数,从而提高网页的加载速度。

url-loaderoptions 中包含以下的配置:

  • limit:表示将小于这个值的文件都转化为 DataURL 嵌入,大于这个值的文件转化为文件路径进行引用。
  • name:表示使用哪个名字规则来为生成的文件命名。

使用 url-loader 可以非常方便地将图片文件转化为 DataURL 嵌入到 HTML、CSS 或 JS 文件中:

file-loader

file-loader 的作用与 url-loader 类似,但它不会将文件转化为 DataURL 而是直接复制文件到指定目录下,同时在引用时返回由相对 URL 组成的字符串。

file-loaderoptions 中包含以下的配置:

  • name:表示使用哪个名字规则来为生成的文件命名。

使用 file-loader 可以将图片文件直接复制到指定的目录下,返回用于引用的 URL:

使用 file-loader 还有一个额外的好处,就是可以很方便地通过 Webpack 对图片进行压缩,从而减少图片文件的大小。

图片压缩

在实际应用中,为了使页面加载速度更快,我们需要对图片进行压缩以减少文件的大小。 图片压缩通常分为两种方式:有损压缩和无损压缩。

  • 无损压缩:压缩后的图片与原图相比没有任何视觉差别,同时文件大小有所减小。无损压缩的算法有 PNG、GIF、WEBP 等。
  • 有损压缩:压缩后的图片与原图有一定程度的视觉差别,但文件大小有较大程度的减小。有损压缩的算法有 JPEG、WEBP 等。

在 Webpack 中,可以通过插件的方式实现对图片的压缩,常用的压缩插件有 image-webpack-loaderimagemin 等。

image-webpack-loader

image-webpack-loader 是一个在打包过程中压缩图片的 Loader,它可以根据图片大小自动选择使用哪种压缩算法。当然,你也可以通过相关配置进行手动选择。

在 Webpack 配置文件中,可以加入以下的代码来使用 image-webpack-loader

-- -------------------- ---- -------
-- -----------------

-------------- - -
  ------- -
    ------ -
      -
        ----- -------------------
        ---- -
          -
            ------- -------------
            -------- -
              ------ -----
              ----- ------------------------------
            -
          --
          -
            ------- -----------------------
            -------- -
              -------- -
                ------------ -----
                -------- --
              --
              -------- -
                -------- ------
              --
              --------- -
                -------- --------
                ------ -
              --
              --------- -
                ----------- ------
              --
              ----- -
                -------- --
              -
            -
          -
        -
      -
    -
  -
-

image-webpack-loaderoptions 中包含了各种算法的相关配置。

结尾

在 Webpack 中,处理图片资源相对来说比较简单,只需要在配置文件中加入相应的 Loader,并进行相应的配置。同时,如果你要进一步优化图片,可以使用插件进行图片的压缩。

希望本文能够对你掌握 Webpack 在处理图片资源方面的方法有一定的帮助。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/6780032fce7f48612528cccd

Feed
back