Middle
Ako funguje hot reload na príklade Vue CLI?
sobes.tech AI
Odpoveď od AI
Vue CLI používa webpack-dev-server, ktorý obsahuje Hot Module Replacement (HMR).
Proces fungovania HMR pre Vue vyzerá takto:
- Spustenie vývojového servera: Pri spustení
npm run servewebpack-dev-server spustí server a začne sledovať súbory projektu. - Zmena súboru: Keď vývojár uloží zmeny v súbore (
.vue,.js,.cssatď.). - Detekcia zmien: webpack-dev-server deteguje zmenu.
- Rebuild modulu: Webpack prebuduje zmenený modul (napríklad Vue komponentu).
- Odoslanie aktualizácie: webpack-dev-server odošle balík aktualizácií (hotswap update) do prehliadača cez WebSocket.
- Aplikácia aktualizácie: Časť klienta HMR (integrovanej do build kódu), obdrží balík a pokúsi sa ho aplikovať. Pre Vue komponenty to znamená nahradiť starú definíciu komponentu novou, pričom sa zachová aktuálny stav inštancií komponentu (napríklad dáta v
data()). - Aktualizácia DOM: Vue reaktívne aktualizuje DOM pomocou nového šablóny alebo logiky komponentu, bez reloadu celej stránky.
Príklad štruktúry balíka aktualizácií:
{
"hash": "...", // Hash buildovania
"c": { // Aktualizované časti buildu
"src/components/HelloWorld.vue": true // Modul, ktorý treba aktualizovať
}
}
Klientska časť HMR dostáva tento balík a vykonáva logiku aktualizácie pre src/components/HelloWorld.vue.
// Príklad pseudokódu v klientskom HMR kóde
if (module.hot) {
module.hot.accept('./components/HelloWorld.vue', function() {
// Logika aktualizácie Vue komponentu, zachovanie stavu
// Zvyčajne to riadi vue-loader spolu s webpack-dev-server
});
}
Týmto spôsobom, pri zmene komponentu, sa aktualizuje iba tento komponent v pamäti prehliadača, nie celá stránka, čo výrazne zrýchľuje vývoj.