webpack-dev-server啓動後,localhost:8080返回index.html的原理

webpack-dev-server啟動後,localhost:8080返回index.html的原理

其原理是,npm install後,webpack-dev-server.js就會自動出現在當前項目文件夾的node_modules目錄裡:

webpack-dev-server啟動後,localhost:8080返回index.html的原理

Webpack-dev-server.js的服務器實例通過關鍵字new創建出來:

webpack-dev-server啟動後,localhost:8080返回index.html的原理

在Server.js的內部實現裡,第76行我們就能觀察到該服務器採用nodejs的express模塊實現。

Express實例創建後,通過第78行app.all('*', ... )掛接處理函數,這個箭頭函數(req,res,next) => { 負責處理所有發往這個服務器的HTTP請求。

webpack-dev-server啟動後,localhost:8080返回index.html的原理

第92行就是Server.js裡webpackDevMiddleware的初始化過程。

webpack-dev-server啟動後,localhost:8080返回index.html的原理

現在我們就來看看瀏覽器裡輸入localhost:8080後會發生什麼事情。

webpack-dev-server啟動後,localhost:8080返回index.html的原理

根據前面的描述,瀏覽器發起前往localhost:8080的請求被webpackDevMiddleware服務,見下圖調試截圖,其中變量req.url為/,這是我們期望看到的,因為localhost:8080後面沒有跟任何路徑。

最終會將執行流投遞到processRequest函數里,第53行代碼說明,如果HTTP請求路徑/後沒有子路徑,則默認返回一個硬編碼的index.html

webpack-dev-server啟動後,localhost:8080返回index.html的原理

謎團就這樣解開了。


分享到:


相關文章: