webpack打包后index.html引用文件地址问题小结

 更新时间:2024年05月06日 10:59:18   作者:yusirxiaer  
在前端开发中,src 属性指定的相对路径是相对于当前 HTML 文件的路径,而不是相对于网站的根目录,这篇文章主要介绍了webpack打包后index.html引用文件地址问题,需要的朋友可以参考下

在前端开发中,src 属性指定的相对路径是相对于当前 HTML 文件的路径,而不是相对于网站的根目录。这种相对路径的解析方式是浏览器的行为。

当浏览器解析 HTML 文件中的 <script> 标签时,它会根据相对路径来构建请求 URL。如果你在 HTML 文件中使用了相对路径,浏览器会将这些路径解释为相对于当前 HTML 文件所在位置的路径。

例如,假设你的 HTML 文件位于 http://localhost:8080/index.html,而在该 HTML 文件中有如下的 <script> 标签:

<script defer="defer" src="js/chunk-vendors.10fd6bed.js"></script>
<script defer="defer" src="js/app.768bed6f.js"></script>
  • 这里的 src 属性指定的路径 js/chunk-vendors.10fd6bed.jsjs/app.768bed6f.js 是相对于当前 HTML 文件的路径。浏览器会将这些路径解析为:
  • js/chunk-vendors.10fd6bed.js 相对于 http://localhost:8080/index.html 的路径是 http://localhost:8080/js/chunk-vendors.10fd6bed.jsjs/app.768bed6f.js 相对于 http://localhost:8080/index.html 的路径是 http://localhost:8080/js/app.768bed6f.js

如果你希望确保脚本文件的路径是相对于网站根目录的绝对路径,可以使用以斜杠 / 开头的路径来指定:

<script defer="defer" src="/js/chunk-vendors.10fd6bed.js"></script>
 <script defer="defer" src="/js/app.768bed6f.js"></script>

这样浏览器就会从网站的根目录开始解析路径,而不是相对于当前 HTML 文件的路径。请根据需要选择适合的路径格式来引用你的脚本文件。

在 Webpack 中设置 publicPath 的目的确实是为了定义输出资源文件的公共 URL 前缀。然而,当您在 HTML 文件中直接引用资源文件时,使用的是相对于当前 HTML 页面的路径。这意味着,如果您在 HTML 中这样写:

<script src="js/chunk-vendors.10fd6bed.js"></script>

这里的路径是相对于当前 HTML 文件的。如果 HTML 文件位于网站的根目录,那么资源文件的路径就是相对于根目录下的 js 文件夹。在这种情况下,即使您在 Webpack 配置中设置了 publicPath'./',它也不会影响 HTML 中硬编码的相对路径。

Webpack 的 publicPath 主要影响的是 Webpack 打包后的输出文件路径,特别是当您通过 Webpack 的 output 配置指定了一个输出路径时。例如:

output: {
  path: path.resolve(__dirname, 'dist'),
  filename: '[name].js',
  publicPath: './' // 这里设置为当前目录
}

在上面的配置中,Webpack 会将打包后的文件放在 dist 目录下,而 publicPath: './' 指定了这些文件的公共 URL 前缀。但是,这个 publicPath 仅用于 Webpack 在生成资源链接时的前缀,比如在 HTML 文件中自动生成的 script 和 link 标签的 href 属性。如果您手动编写 HTML 并指定资源路径,那么您需要确保路径正确,并且与服务器上的资源实际位置相匹配。

如果您希望 Webpack 自动处理资源路径,可以使用 html-webpack-plugin 来生成 HTML 文件,并通过该插件配置 publicPath,这样插件会自动为您生成正确的资源链接。

const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
  // ... 其他配置
  plugins: [
    new HtmlWebpackPlugin({
      publicPath: './', // 这里设置为当前目录
      // ... 其他配置
    }),
  ],
  // ... 其他配置
};

使用 html-webpack-plugin 时,它会根据您提供的 publicPath 自动在生成的 HTML 文件中添加正确的资源路径。如果您手动编写 HTML 并直接引用资源,那么您需要确保路径正确,并且与服务器上的资源实际位置相匹配,而不受 Webpack publicPath 配置的影响。

到此这篇关于webpack打包后index.html引用文件地址问题的文章就介绍到这了,更多相关webpack打包index.html引用文件地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript实现下拉列表效果

    JavaScript实现下拉列表效果

    这篇文章主要为大家详细介绍了JavaScript实现下拉列表效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • js clearInterval()方法的定义和用法

    js clearInterval()方法的定义和用法

    clearInterval()方法能够取消setInterval()方法设置的定时器,本文给大家详解clearInterval()方法的定义和用法,感兴趣的朋友参考下。
    2015-11-11
  • webpack 5 mode的作用和区别解析

    webpack 5 mode的作用和区别解析

    Webpack 5 是一款强大的模块打包工具,可用于将许多分散的模块按照依赖关系打包成一个(或多个)bundle,这篇文章给大家介绍webpack 5 mode的作用和区别解析,感兴趣的朋友跟随小编一起看看吧
    2024-01-01
  • JS设置cookie、读取cookie

    JS设置cookie、读取cookie

    js设置cookie有很多种方法,包括JS设置cookie、读取cookie,工作中常会用到!下面是详细代码,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • JavaScript canvas实现加载图片

    JavaScript canvas实现加载图片

    这篇文章主要为大家详细介绍了JavaScript canvas实现加载图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 使用JS编写的随机抽取号码的小程序

    使用JS编写的随机抽取号码的小程序

    这篇文章主要介绍了使用JS编写的随机抽取号码的小程序功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-08-08
  • 引入JS文件IE6报语法错误或缺少对象问题的解决方法

    引入JS文件IE6报语法错误或缺少对象问题的解决方法

    引入JS文件IE6报错或缺少对象问题想必很多朋友都有遇到过吧,这个问题在于文件编码上,下面为大家介绍下比较不错的解决方法
    2014-01-01
  • JavaScript 题型问答有答案参考

    JavaScript 题型问答有答案参考

    JavaScript 题型问答有答案参考,都是一些开发中容易碰到的问题。
    2010-02-02
  • JavaScript使用多线程实现一个大文件上传

    JavaScript使用多线程实现一个大文件上传

    这篇文章主要为大家详细介绍了JavaScript使用多线程实现一个大文件上传的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2024-11-11
  • Servlet返回的数据js解析2种方法

    Servlet返回的数据js解析2种方法

    这篇文章主要介绍了Servlet返回的数据js解析2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论