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

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

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

斜杠/的含義
配置中/代表url根路徑,例如http://localhost:8080/dist/js/test.js中的http://localhost:8080/
常見問題:
瀏覽器打開http://localhost:9000/index.html時頁面空白。這是因為output與devServer中的publicPath不一致,導(dǎo)致資源沒有引入進頁面里。
例子:
假如你的配置如下就會出現(xiàn)頁面空白的問題
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可以引入到該資源。體會下這句話,"開發(fā)環(huán)境時,用webpack-dev-server打包的資源是存放在devServer.publicPath路徑下",你就會明白了。所以output和devServer中的publicPath需要一致。

webpack中 publicPath 跟 path 的區(qū)別
自己發(fā)現(xiàn),在寫webpack.config的時候,output中為什么寫了path,還要寫publicPath,這兩個有什么區(qū)別呢?
首先,path的作用是什么?
就是存放生成的bundle.js地方。
那么bundle.js怎么用呢?
我們在index.html中script引入bundle.js
現(xiàn)在有個問題,如何寫這個路徑?
單單一個path,咱們能不能取到這個文件呢?
我測試了一下。不能取到。。
那怎么辦?
此時就引入一個publicPath,這里寫的路徑才讓你在index.html中引入的到。
那么問題來了,那寫path有什么用呢?
反正在我的項目沒有寫這個屬性。。直接publicPath
到此這篇關(guān)于webpack的publicpath的文章就介紹到這了,更多相關(guān)webpack的publicpath內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實現(xiàn)Iterator模式實例分析
這篇文章主要介紹了JavaScript實現(xiàn)Iterator模式,實例分析了Iterator模式的相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2015-06-06
用Javascript實現(xiàn)Windows任務(wù)管理器的代碼
在Windows系統(tǒng)上,自從98系統(tǒng)以來就提供了腳本宿主(Windows Scripting Host 簡稱WSH)的功能,WSH可以加載并運行JS和VBS腳本,并支持調(diào)用系統(tǒng)的COM組件,在COM組件的支持下腳本可以輕松實現(xiàn)非常強大的功能2012-03-03
javascript上傳圖片前預(yù)覽圖片兼容大多數(shù)瀏覽器
上傳圖片前預(yù)覽圖片這種效果應(yīng)用比較廣泛,實現(xiàn)的方也大同小異,下面為大家介紹下,在javascript中是如何實現(xiàn)的,感興趣的朋友可以參考下2013-10-10

