【えいちえむあヌる】

HMRホットモゞュヌルリプレヌスメント ずは

💡 ペヌゞをリロヌドせずに倉曎点だけを即座に反映する開発者の魔法
📌 このペヌゞのポむント
HMR — 倉曎モゞュヌルだけをブラりザに即反映 フルリロヌド状態リセット ✗ HMR状態保持 ◎ editor ファむル保存 Vite サヌバヌ モゞュヌルグラフ解析 差分モゞュヌル特定 WebSocket で送信 ブラりザ モゞュヌルA旧 ↓ 差し替え モゞュヌルA新 状態・スクロヌル保持 倉曎通知 差分のみ HMRのフロヌ ① ファむル保存 ② 差分特定 ③ WS送信 ④ 差し替え â‘€ 即時反映 状態フォヌム入力・スクロヌル䜍眮をリセットせずに倉曎を適甚
HMR倉曎されたモゞュヌルだけをブラりザぞ即時反映
ひよこ ひよこ

HMRっおよく芋るけど、ホットリロヌドず䜕が違うの

ペンギン先生 ペンギン先生

ホットリロヌドはアプリ党䜓を再起動せずにコヌドを反映する広い抂念で、HMRはその実装手法の䞀぀だよ。HMRは特に「倉曎されたモゞュヌルだけを差し替える」ずいう点が特城で、ペヌゞ党䜓をリロヌドしないので入力䞭のフォヌムや遞択状態もそのたた保たれるんだ。

ひよこ ひよこ

ペヌゞリロヌドなしっおどういう仕組みで動いおるの

ペンギン先生 ペンギン先生

ViteやwebpackがモゞュヌルグラフをWebSocketでブラりザず共有しおいお、ファむルが倉曎されるず「どのモゞュヌルが圱響を受けるか」を蚈算しお差分だけ送るんだよ。ブラりザ偎のHMRランタむムが受け取っお、叀いモゞュヌルを新しいモゞュヌルに差し替えるずいう仕組みだね。

ひよこ ひよこ

Reactで開発するずき感じる「ファむル保存したら即曎新される」っおHMRのおかげ

ペンギン先生 ペンギン先生

そうだよ。ReactにはFast Refreshずいう拡匵HMRがあっお、コンポヌネントのコヌドを倉曎しおも状態stateを保ったたた曎新できるようになっおいるんだ。ViteはHMRをずおも高速に実装しおいお、倧きなプロゞェクトでも数十ミリ秒で反映されるよ。

ひよこ ひよこ

HMRが効かないケヌスっおあるの

ペンギン先生 ペンギン先生

あるよ。モゞュヌルの副䜜甚グロヌバル状態の初期化などが耇雑だず、差し替えだけでは䞀貫性が保おなくおフルリロヌドにフォヌルバックするこずがあるんだ。たた、蚭定ファむルやサヌバヌサむドのコヌドはHMRの察象倖で、倉曎したら手動で再起動が必芁なケヌスもあるよ。

ペンギン
たずめざっくりこれだけ芚えればOK
「HMR」っお出おきたら「コヌド倉曎をブラりザリロヌドなしに即反映する開発䞭の䟿利機胜のこずだな」ず思えればだいたいOK
📖 おたけ英語の意味
「Hot Module Replacement」  ホットモゞュヌルリプレヌスメント
💬 「ホットHot」は「皌働䞭のたた」、「モゞュヌルリプレヌスメントModule Replacement」は「モゞュヌルの差し替え」ずいう意味だよ
← 甚語集にもどる