webpack4 打包后图片引用路径的问题

阅读时长 4 分钟读完

前端开发中常常需要使用图片,图片资源通常嵌入HTML代码中,但是在webpack打包后,图片引用路径发生了改变,导致页面无法正确加载图片。那么,在webpack4中,如何解决打包后图片引用路径的问题呢?以下是一些实用的方法。

解决方法

1. 使用file-loader

file-loader可以将我们各种类型的文件(包括图片)输出到指定的文件夹,并返回处理后的文件的publicPath路径(相对于webpack的output.publicPath)。为了让引入的图片也可以输出到output.path目录下,我们需要在loader中设置options.outputPath。

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

在组件中使用图片:

2. 使用url-loader

url-loader依赖file-loader,它的作用与file-loader相似,不同之处在于它可以将图片资源转化为base64格式直接输出到页面中,从而减少了http请求。

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

在组件中使用图片:

3. 使用html-loader

html-loader可以解决在HTML文件中引入图片的路径问题,绝对路径的图片仍需要使用absolute路径,而相对路径的图片会自动解析为相对于HTML文件的路径。

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

在HTML文件中使用图片:

总结

无论是使用file-loader、url-loader还是html-loader,都可以有效解决webpack4打包后图片引用路径的问题。在实际项目中,我们需要根据需求选择最适合的loader进行图片处理,以实现最佳的体验效果。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64eeb484f6b2d6eab38ac615

纠错
反馈