【webpack】__webpack_public_path__作用

前言:
最開始接觸微前端,由于路由異構的問題會導致資源請求出錯。
主項目域名a.com,子項目域名b.com,請求的動態(tài)(dynamic import)文件b.com/js/test.js,在微前端下會請求到a.com/js/test.js會導致資源404錯誤。
后面經(jīng)過查找需要指定__webpack_public_path__,能夠解決路由異構問題,本文就是解釋__webpack_public_path__的運行機制

__webpack_public_path__ 是如何運行的

首先對于動態(tài)文件dynamic import, webpack 是如何解析的。

// 動態(tài)文件
const testFile = () => import('./test.js')
// 解析偽代碼:
const testFile = __webpack_require__.e('./test.js')

var __webpack_require__.e = function (url) {
  return new Promise((resolve, reject) => {
    var script = document.createElement('script')
    script.src = __webpack_require__.p + url
    script.onload = resolve()
    script.error = reject()
  })
}

更詳細的代碼:

這里有一個很重要的參數(shù)__webpack_require__.p,__webpack__require__.p = 配置文件的publicPath

如果你需要指定__webpack__public_path__,需要在文件的最開頭引入。

entry.js
public-path.js

當你顯示的指定了__webpack_public_path__的值,那么它將會在運行時覆蓋__webpack__require__.p的值,也就是說配置項的publicPath會失真。

image.png
image.png

這樣,我們請求的路徑就會變成這樣:

image.png

注意:這只針對動態(tài)組件的publicPath,entry文件還是遵循publicPath的配置。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容