詳解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)該寫(xiě)“以根目錄的方式表示的路徑,如:/dist/”或者是絕對(duì)路徑,不應(yīng)該是相對(duì)路徑。因?yàn)閷㈧o態(tài)資源放在CDN上時(shí),使用相對(duì)路徑是無(wú)法訪問(wèn)到資源的。如果不設(shè)置pablicPath行不行,答案是不行。不設(shè)置的話默認(rèn)取值為空字符串(pablicPath: ' '),那么使用html - webpack - plugin打包后的html中引入的js路徑為 src = "../folder1.a095318635a306de0d2e.js",對(duì),成了相對(duì)路徑了。所以如果在生產(chǎn)環(huán)境上,publicPath設(shè)置成絕對(duì)路徑最好。
webpack-dev-server中的publicPath
默認(rèn)值:‘/’。注意,如果你output和devServer中都沒(méi)有配置publicPath,那么devServer的publicPath默認(rèn)值為‘/’;但是如果output中配了publicPath,devServer中沒(méi)配,那么devServer中publicPath的默認(rèn)值以output中的為準(zhǔn)。
在開(kāi)發(fā)階段,我們要用devServer啟動(dòng)一個(gè)開(kāi)發(fā)服務(wù)器,這里也有一個(gè)publicPath需要配置。webpack-dev-server打包的文件是放在內(nèi)存中的而不是本地上,這些打包后的資源對(duì)外的根目錄就是publicPath。
例如:
devServer: { ... publicPath: '/dist/' }
那么我們可以在瀏覽器中輸入,http://localhost:9000/dist/ + 資源名,就可以訪問(wèn)到該資源(下圖)。注意:devServer中的publicPath需要跟outPut中的一致,或則不設(shè)置publicPath,他會(huì)默認(rèn)與output中的一致
斜杠/
的含義
配置中/
代表url根路徑,例如http://localhost:8080/dist/js/test.js
中的http://localhost:8080/
常見(jiàn)問(wèn)題:
瀏覽器打開(kāi)http://localhost:9000/index.html時(shí)頁(yè)面空白。這是因?yàn)閛utput與devServer中的publicPath不一致,導(dǎo)致資源沒(méi)有引入進(jìn)頁(yè)面里。
例子:
假如你的配置如下就會(huì)出現(xiàn)頁(yè)面空白的問(wèn)題
output: { ... publicPath: '/dist/' } devServer: { ... publicPath: '/assets/' }
html-webpack-plugin插件在打包html(下圖)時(shí),里面引入js文件的路徑會(huì)是src="/dist/資源名" 。但是http://localhost:9000/dist/folder1.0bad1ca562f90da47034.js是引入不到該資源的,而http://localhost:9000/assets/folder1.0bad1ca562f90da47034.js可以引入到該資源。體會(huì)下這句話,"開(kāi)發(fā)環(huán)境時(shí),用webpack-dev-server打包的資源是存放在devServer.publicPath路徑下",你就會(huì)明白了。所以output和devServer中的publicPath需要一致。
webpack中 publicPath 跟 path 的區(qū)別
自己發(fā)現(xiàn),在寫(xiě)webpack.config的時(shí)候,output中為什么寫(xiě)了path,還要寫(xiě)publicPath,這兩個(gè)有什么區(qū)別呢?
首先,path的作用是什么?
就是存放生成的bundle.js地方。
那么bundle.js怎么用呢?
我們?cè)趇ndex.html中script引入bundle.js
現(xiàn)在有個(gè)問(wèn)題,如何寫(xiě)這個(gè)路徑?
單單一個(gè)path,咱們能不能取到這個(gè)文件呢?
我測(cè)試了一下。不能取到。。
那怎么辦?
此時(shí)就引入一個(gè)publicPath,這里寫(xiě)的路徑才讓你在index.html中引入的到。
那么問(wèn)題來(lái)了,那寫(xiě)path有什么用呢?
反正在我的項(xiàng)目沒(méi)有寫(xiě)這個(gè)屬性。。直接publicPath
到此這篇關(guān)于webpack的publicpath的文章就介紹到這了,更多相關(guān)webpack的publicpath內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript實(shí)現(xiàn)Iterator模式實(shí)例分析
這篇文章主要介紹了JavaScript實(shí)現(xiàn)Iterator模式,實(shí)例分析了Iterator模式的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-06-06用Javascript實(shí)現(xiàn)Windows任務(wù)管理器的代碼
在Windows系統(tǒng)上,自從98系統(tǒng)以來(lái)就提供了腳本宿主(Windows Scripting Host 簡(jiǎn)稱WSH)的功能,WSH可以加載并運(yùn)行JS和VBS腳本,并支持調(diào)用系統(tǒng)的COM組件,在COM組件的支持下腳本可以輕松實(shí)現(xiàn)非常強(qiáng)大的功能2012-03-03JavaScript的parseInt 進(jìn)制問(wèn)題
今天在整理以前寫(xiě)過(guò)的一段根據(jù)周期值自動(dòng)計(jì)算下次執(zhí)行日期的js代碼,發(fā)現(xiàn)一bug,我使用parseInt對(duì)源數(shù)據(jù)串進(jìn)行轉(zhuǎn)換,當(dāng)輸入類似:2009-05-05時(shí),parseInt將把串的05做8進(jìn)制轉(zhuǎn)換,這樣結(jié)果自然就不對(duì)了。2009-05-05javascript上傳圖片前預(yù)覽圖片兼容大多數(shù)瀏覽器
上傳圖片前預(yù)覽圖片這種效果應(yīng)用比較廣泛,實(shí)現(xiàn)的方也大同小異,下面為大家介紹下,在javascript中是如何實(shí)現(xiàn)的,感興趣的朋友可以參考下2013-10-10