詳解webpack中的publicpath
webpack中的publicpath
當(dāng)你的項(xiàng)目是放在服務(wù)器根目錄的時(shí)候,publicpath=“/”
當(dāng)你的項(xiàng)目是放在服務(wù)器根目錄的某個(gè)文件的時(shí)候,publicpath=“/xxx”
如下圖

outPut中的publicPath
默認(rèn)值: 空字符串。
publicPath是非常有必要配置的,他是項(xiàng)目中引入靜態(tài)資源(js、css)時(shí)的基礎(chǔ)路徑。
例如:outPut.publicPath = '/dist/';
在使用html - webpack - plugin插件打包后的html文件(下圖)可以看到,引入js文件的路徑為“publicPath + 靜態(tài)資源“。敲黑板劃重點(diǎn),這里publicPath應(yīng)該寫“以根目錄的方式表示的路徑,如:/dist/”或者是絕對路徑,不應(yīng)該是相對路徑。因?yàn)閷㈧o態(tài)資源放在CDN上時(shí),使用相對路徑是無法訪問到資源的。如果不設(shè)置pablicPath行不行,答案是不行。不設(shè)置的話默認(rèn)取值為空字符串(pablicPath: ' '),那么使用html - webpack - plugin打包后的html中引入的js路徑為 src = "../folder1.a095318635a306de0d2e.js",對,成了相對路徑了。所以如果在生產(chǎn)環(huán)境上,publicPath設(shè)置成絕對路徑最好。

webpack-dev-server中的publicPath
默認(rèn)值:‘/’。注意,如果你output和devServer中都沒有配置publicPath,那么devServer的publicPath默認(rèn)值為‘/’;但是如果output中配了publicPath,devServer中沒配,那么devServer中publicPath的默認(rèn)值以output中的為準(zhǔn)。
在開發(fā)階段,我們要用devServer啟動一個(gè)開發(fā)服務(wù)器,這里也有一個(gè)publicPath需要配置。webpack-dev-server打包的文件是放在內(nèi)存中的而不是本地上,這些打包后的資源對外的根目錄就是publicPath。
例如:
devServer: {
...
publicPath: '/dist/'
}那么我們可以在瀏覽器中輸入,http://localhost:9000/dist/ + 資源名,就可以訪問到該資源(下圖)。注意:devServer中的publicPath需要跟outPut中的一致,或則不設(shè)置publicPath,他會默認(rèn)與output中的一致

斜杠/的含義
配置中/代表url根路徑,例如http://localhost:8080/dist/js/test.js中的http://localhost:8080/
常見問題:
瀏覽器打開http://localhost:9000/index.html時(shí)頁面空白。這是因?yàn)閛utput與devServer中的publicPath不一致,導(dǎo)致資源沒有引入進(jìn)頁面里。
例子:
假如你的配置如下就會出現(xiàn)頁面空白的問題
output: {
...
publicPath: '/dist/'
}
devServer: {
...
publicPath: '/assets/'
}html-webpack-plugin插件在打包html(下圖)時(shí),里面引入js文件的路徑會是src="/dist/資源名" 。但是http://localhost:9000/dist/folder1.0bad1ca562f90da47034.js是引入不到該資源的,而http://localhost:9000/assets/folder1.0bad1ca562f90da47034.js可以引入到該資源。體會下這句話,"開發(fā)環(huán)境時(shí),用webpack-dev-server打包的資源是存放在devServer.publicPath路徑下",你就會明白了。所以output和devServer中的publicPath需要一致。

webpack中 publicPath 跟 path 的區(qū)別
自己發(fā)現(xiàn),在寫webpack.config的時(shí)候,output中為什么寫了path,還要寫publicPath,這兩個(gè)有什么區(qū)別呢?
首先,path的作用是什么?
就是存放生成的bundle.js地方。
那么bundle.js怎么用呢?
我們在index.html中script引入bundle.js
現(xiàn)在有個(gè)問題,如何寫這個(gè)路徑?
單單一個(gè)path,咱們能不能取到這個(gè)文件呢?
我測試了一下。不能取到。。
那怎么辦?
此時(shí)就引入一個(gè)publicPath,這里寫的路徑才讓你在index.html中引入的到。
那么問題來了,那寫path有什么用呢?
反正在我的項(xiàng)目沒有寫這個(gè)屬性。。直接publicPath
到此這篇關(guān)于webpack的publicpath的文章就介紹到這了,更多相關(guān)webpack的publicpath內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
layui checkbox默認(rèn)選中,獲取選中值,清空所有選中項(xiàng)的例子
今天小編就為大家分享一篇layui checkbox默認(rèn)選中,獲取選中值,清空所有選中項(xiàng)的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-09-09
JavaScript實(shí)現(xiàn)Java中StringBuffer的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)Java中StringBuffer的方法,實(shí)例分析了StringBuffer類的實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下2015-02-02
Javascript的并行運(yùn)算實(shí)現(xiàn)代碼
隨著多核cpu的普級,并發(fā)/并行多線程運(yùn)算在主流的編程語言越來越流行,而在目前Javascript實(shí)現(xiàn)中還看不到在語言方面支持多線程,現(xiàn)在Javascript如此流行,真希望今后會在語言的層面有很大的變化.2010-11-11
javascript 網(wǎng)頁跳轉(zhuǎn)的方法
昨天練習(xí)的時(shí)候正好要用到跳轉(zhuǎn)代碼,在網(wǎng)上找了一下,覺得下面幾個(gè)不錯(cuò)...整理了一下發(fā)上來...2008-12-12
Bootstrap每天必學(xué)之輪播(Carousel)插件
Bootstrap每天必須之輪播(Carousel)插件,Bootstrap 輪播(Carousel)插件是一種靈活的響應(yīng)式的向站點(diǎn)添加滑塊的方式,感興趣的小伙伴們可以參考一下2016-04-04
javascript背景時(shí)鐘實(shí)現(xiàn)方法
這篇文章主要介紹了javascript背景時(shí)鐘實(shí)現(xiàn)方法,涉及javascript時(shí)間及頁面元素樣式的相關(guān)操作技巧,需要的朋友可以參考下2015-06-06
使用JS實(shí)現(xiàn)抖音上很火的圣誕樹的示例代碼
圣誕節(jié)快到了,經(jīng)常會在抖音上刷到圣誕樹的視頻,所以本文小編給大家介紹了如何使用JS實(shí)現(xiàn)圣誕樹,文章通過代碼示例給大家介紹的非常詳細(xì),感興趣的小伙伴跟著小編一起來看看吧2023-12-12
JavaScript數(shù)值千分位格式化的兩種簡單實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狫avaScript數(shù)值千分位格式化的兩種簡單實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08

