webpack打包后index.html引用文件地址問題小結(jié)
在前端開發(fā)中,src 屬性指定的相對(duì)路徑是相對(duì)于當(dāng)前 HTML 文件的路徑,而不是相對(duì)于網(wǎng)站的根目錄。這種相對(duì)路徑的解析方式是瀏覽器的行為。
當(dāng)瀏覽器解析 HTML 文件中的 <script> 標(biāo)簽時(shí),它會(huì)根據(jù)相對(duì)路徑來構(gòu)建請(qǐng)求 URL。如果你在 HTML 文件中使用了相對(duì)路徑,瀏覽器會(huì)將這些路徑解釋為相對(duì)于當(dāng)前 HTML 文件所在位置的路徑。
例如,假設(shè)你的 HTML 文件位于 http://localhost:8080/index.html,而在該 HTML 文件中有如下的 <script> 標(biāo)簽:
<script defer="defer" src="js/chunk-vendors.10fd6bed.js"></script> <script defer="defer" src="js/app.768bed6f.js"></script>
- 這里的
src屬性指定的路徑js/chunk-vendors.10fd6bed.js和js/app.768bed6f.js是相對(duì)于當(dāng)前 HTML 文件的路徑。瀏覽器會(huì)將這些路徑解析為: js/chunk-vendors.10fd6bed.js相對(duì)于http://localhost:8080/index.html的路徑是http://localhost:8080/js/chunk-vendors.10fd6bed.jsjs/app.768bed6f.js相對(duì)于http://localhost:8080/index.html的路徑是http://localhost:8080/js/app.768bed6f.js
如果你希望確保腳本文件的路徑是相對(duì)于網(wǎng)站根目錄的絕對(duì)路徑,可以使用以斜杠 / 開頭的路徑來指定:
<script defer="defer" src="/js/chunk-vendors.10fd6bed.js"></script> <script defer="defer" src="/js/app.768bed6f.js"></script>
這樣瀏覽器就會(huì)從網(wǎng)站的根目錄開始解析路徑,而不是相對(duì)于當(dāng)前 HTML 文件的路徑。請(qǐng)根據(jù)需要選擇適合的路徑格式來引用你的腳本文件。
在 Webpack 中設(shè)置 publicPath 的目的確實(shí)是為了定義輸出資源文件的公共 URL 前綴。然而,當(dāng)您在 HTML 文件中直接引用資源文件時(shí),使用的是相對(duì)于當(dāng)前 HTML 頁面的路徑。這意味著,如果您在 HTML 中這樣寫:
<script src="js/chunk-vendors.10fd6bed.js"></script>
這里的路徑是相對(duì)于當(dāng)前 HTML 文件的。如果 HTML 文件位于網(wǎng)站的根目錄,那么資源文件的路徑就是相對(duì)于根目錄下的 js 文件夾。在這種情況下,即使您在 Webpack 配置中設(shè)置了 publicPath 為 './',它也不會(huì)影響 HTML 中硬編碼的相對(duì)路徑。
Webpack 的 publicPath 主要影響的是 Webpack 打包后的輸出文件路徑,特別是當(dāng)您通過 Webpack 的 output 配置指定了一個(gè)輸出路徑時(shí)。例如:
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name].js',
publicPath: './' // 這里設(shè)置為當(dāng)前目錄
}在上面的配置中,Webpack 會(huì)將打包后的文件放在 dist 目錄下,而 publicPath: './' 指定了這些文件的公共 URL 前綴。但是,這個(gè) publicPath 僅用于 Webpack 在生成資源鏈接時(shí)的前綴,比如在 HTML 文件中自動(dòng)生成的 script 和 link 標(biāo)簽的 href 屬性。如果您手動(dòng)編寫 HTML 并指定資源路徑,那么您需要確保路徑正確,并且與服務(wù)器上的資源實(shí)際位置相匹配。
如果您希望 Webpack 自動(dòng)處理資源路徑,可以使用 html-webpack-plugin 來生成 HTML 文件,并通過該插件配置 publicPath,這樣插件會(huì)自動(dòng)為您生成正確的資源鏈接。
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
// ... 其他配置
plugins: [
new HtmlWebpackPlugin({
publicPath: './', // 這里設(shè)置為當(dāng)前目錄
// ... 其他配置
}),
],
// ... 其他配置
};使用 html-webpack-plugin 時(shí),它會(huì)根據(jù)您提供的 publicPath 自動(dòng)在生成的 HTML 文件中添加正確的資源路徑。如果您手動(dòng)編寫 HTML 并直接引用資源,那么您需要確保路徑正確,并且與服務(wù)器上的資源實(shí)際位置相匹配,而不受 Webpack publicPath 配置的影響。
到此這篇關(guān)于webpack打包后index.html引用文件地址問題的文章就介紹到這了,更多相關(guān)webpack打包index.html引用文件地址內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
javascript 觸發(fā)HTML元素綁定的函數(shù)
只能觸發(fā)函數(shù)的執(zhí)行,并不能完全模擬出實(shí)際的點(diǎn)擊。2010-09-09
深入理解Javascript中的循環(huán)優(yōu)化
這篇文章介紹了Javascript中的循環(huán)優(yōu)化,有需要的朋友可以參考一下2013-11-11
相當(dāng)流暢的JavaScript拖拽排序?qū)崿F(xiàn)方法代碼
拖拽排序是一種在網(wǎng)頁設(shè)計(jì)和應(yīng)用程序中常見的交互方式,允許用戶通過鼠標(biāo)或觸摸操作來重新排列頁面或界面上的元素,這篇文章主要介紹了相當(dāng)流暢的JavaScript拖拽排序?qū)崿F(xiàn)的相關(guān)資料,需要的朋友可以參考下2026-04-04
利用js查找數(shù)組中指定元素并返回該元素的所有索引示例
在js數(shù)組中查找特定的元素相信對(duì)大家來說再熟悉不過了,但越簡(jiǎn)單的東西越可能出錯(cuò),小編最近就犯了這樣的錯(cuò)誤,所以想著干脆將實(shí)現(xiàn)的代碼整理下來,方便自己以后需要的時(shí)候,或者有需要的朋友們參考學(xué)習(xí),下面來一起看看吧。2017-03-03
詳解JavaScript基于面向?qū)ο笾畡?chuàng)建對(duì)象(1)
這篇文章主要介紹了JavaScript基于面向?qū)ο笾畡?chuàng)建對(duì)象,對(duì)創(chuàng)建對(duì)象進(jìn)行了詳細(xì)描述,感興趣的小伙伴們可以參考一下2015-12-12
javascript手風(fēng)琴下拉菜單實(shí)現(xiàn)代碼
手風(fēng)琴效果的下拉菜單大家都有見到過吧,實(shí)現(xiàn)的方法也有很多,這篇文章就為大家分享了javascript手風(fēng)琴下拉菜單實(shí)現(xiàn)代碼,純手寫的,感興趣的朋友不要錯(cuò)過。2015-11-11
JavaScript動(dòng)態(tài)添加數(shù)據(jù)到表單并提交的幾種方式
這篇文章主要介紹了JavaScript動(dòng)態(tài)添加數(shù)據(jù)到表單并提交,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06

