详解webpack中的publicpath

 更新时间:2024年01月25日 16:18:57   作者:前端 贾公子  
这篇文章主要介绍了webpack中的publicpath,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

webpack中的publicpath

当你的项目是放在服务器根目录的时候,publicpath=“/”
当你的项目是放在服务器根目录的某个文件的时候,publicpath=“/xxx”
如下图

outPut中的publicPath

默认值: 空字符串。

  publicPath是非常有必要配置的,他是项目中引入静态资源(js、css)时的基础路径。

例如:outPut.publicPath = '/dist/';

在使用html - webpack - plugin插件打包后的html文件(下图)可以看到,引入js文件的路径为“publicPath + 静态资源“。敲黑板划重点,这里publicPath应该写“以根目录的方式表示的路径,如:/dist/”或者是绝对路径,不应该是相对路径。因为将静态资源放在CDN上时,使用相对路径是无法访问到资源的。如果不设置pablicPath行不行,答案是不行。不设置的话默认取值为空字符串(pablicPath: ' '),那么使用html - webpack - plugin打包后的html中引入的js路径为 src = "../folder1.a095318635a306de0d2e.js",对,成了相对路径了。所以如果在生产环境上,publicPath设置成绝对路径最好。

webpack-dev-server中的publicPath

默认值:‘/’。注意,如果你output和devServer中都没有配置publicPath,那么devServer的publicPath默认值为‘/’;但是如果output中配了publicPath,devServer中没配,那么devServer中publicPath的默认值以output中的为准。

  在开发阶段,我们要用devServer启动一个开发服务器,这里也有一个publicPath需要配置。webpack-dev-server打包的文件是放在内存中的而不是本地上,这些打包后的资源对外的根目录就是publicPath。

例如:

devServer: {
  ...
  publicPath: '/dist/'    
}

那么我们可以在浏览器中输入,http://localhost:9000/dist/  +  资源名,就可以访问到该资源(下图)。注意:devServer中的publicPath需要跟outPut中的一致,或则不设置publicPath,他会默认与output中的一致

斜杠/的含义

配置中/代表url根路径,例如http://localhost:8080/dist/js/test.js中的http://localhost:8080/

常见问题:

 浏览器打开http://localhost:9000/index.html时页面空白。这是因为output与devServer中的publicPath不一致,导致资源没有引入进页面里。

例子:

假如你的配置如下就会出现页面空白的问题

output: {
  ...
  publicPath: '/dist/'        
}
devServer: {
  ...
  publicPath: '/assets/'    
}

html-webpack-plugin插件在打包html(下图)时,里面引入js文件的路径会是src="/dist/资源名" 。但是http://localhost:9000/dist/folder1.0bad1ca562f90da47034.js是引入不到该资源的,而http://localhost:9000/assets/folder1.0bad1ca562f90da47034.js可以引入到该资源。体会下这句话,"开发环境时,用webpack-dev-server打包的资源是存放在devServer.publicPath路径下",你就会明白了。所以output和devServer中的publicPath需要一致。

webpack中 publicPath 跟 path 的区别

自己发现,在写webpack.config的时候,output中为什么写了path,还要写publicPath,这两个有什么区别呢?

首先,path的作用是什么?

就是存放生成的bundle.js地方。

那么bundle.js怎么用呢?

我们在index.html中script引入bundle.js

现在有个问题,如何写这个路径?

单单一个path,咱们能不能取到这个文件呢?
我测试了一下。不能取到。。

那怎么办?

此时就引入一个publicPath,这里写的路径才让你在index.html中引入的到。

那么问题来了,那写path有什么用呢?
反正在我的项目没有写这个属性。。直接publicPath

到此这篇关于webpack的publicpath的文章就介绍到这了,更多相关webpack的publicpath内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • layui checkbox默认选中,获取选中值,清空所有选中项的例子

    layui checkbox默认选中,获取选中值,清空所有选中项的例子

    今天小编就为大家分享一篇layui checkbox默认选中,获取选中值,清空所有选中项的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript实现Java中StringBuffer的方法

    JavaScript实现Java中StringBuffer的方法

    这篇文章主要介绍了JavaScript实现Java中StringBuffer的方法,实例分析了StringBuffer类的实现与使用技巧,需要的朋友可以参考下
    2015-02-02
  • Javascript的并行运算实现代码

    Javascript的并行运算实现代码

    随着多核cpu的普级,并发/并行多线程运算在主流的编程语言越来越流行,而在目前Javascript实现中还看不到在语言方面支持多线程,现在Javascript如此流行,真希望今后会在语言的层面有很大的变化.
    2010-11-11
  • javascript 网页跳转的方法

    javascript 网页跳转的方法

    昨天练习的时候正好要用到跳转代码,在网上找了一下,觉得下面几个不错...整理了一下发上来...
    2008-12-12
  • Bootstrap每天必学之轮播(Carousel)插件

    Bootstrap每天必学之轮播(Carousel)插件

    Bootstrap每天必须之轮播(Carousel)插件,Bootstrap 轮播(Carousel)插件是一种灵活的响应式的向站点添加滑块的方式,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • javascript背景时钟实现方法

    javascript背景时钟实现方法

    这篇文章主要介绍了javascript背景时钟实现方法,涉及javascript时间及页面元素样式的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • 使用JS实现抖音上很火的圣诞树的示例代码

    使用JS实现抖音上很火的圣诞树的示例代码

    圣诞节快到了,经常会在抖音上刷到圣诞树的视频,所以本文小编给大家介绍了如何使用JS实现圣诞树,文章通过代码示例给大家介绍的非常详细,感兴趣的小伙伴跟着小编一起来看看吧
    2023-12-12
  • JavaScript数值千分位格式化的两种简单实现方法

    JavaScript数值千分位格式化的两种简单实现方法

    下面小编就为大家带来一篇JavaScript数值千分位格式化的两种简单实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • 使用javascript控制cookie显示和隐藏背景图

    使用javascript控制cookie显示和隐藏背景图

    本文主要介绍了使用javascript来控制背景图片的显示和隐藏,当点击关闭按钮时,控制CSS使页面不加载背景图,同时记录COOKIE相关参数,并设置cookie的有效期
    2014-02-02
  • 引用外部js乱码问题分析及解决方案

    引用外部js乱码问题分析及解决方案

    web开发中不可避免会使用js,为了给页面良好的瘦身我们一般都会将js代码放在外部,然后通过src引用,如果web页面与js采用的编码不同一就会产生乱码,接下来与大家分享下解决方法,感兴趣的朋友可以参考下哈
    2013-04-04

最新评论