JavaScriptã¢ãžã¥ãŒã«ãããã¢ããããŒã調æŽãšã³ãžã³ãæ·±æãããæŽæ°åæã®è€éãã«çŠç¹ãåœãŠãã·ãŒã ã¬ã¹ãªç§»è¡ãä¿èšŒããã¢ãã³ãªWebã¢ããªã±ãŒã·ã§ã³ã§ã®äžæãæå°éã«æããŸãã
JavaScriptã¢ãžã¥ãŒã«ãããã¢ããããŒã調æŽãšã³ãžã³ïŒæŽæ°ã®åæ
çµ¶ããé²åããWebéçºã®äžçã«ãããŠãã³ãŒãã®ãããã€äžã«ã¹ã ãŒãºãªãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãç¶æããããšã¯æãéèŠã§ãã JavaScriptã¢ãžã¥ãŒã«ãããã¢ããããŒã調æŽãšã³ãžã³ã¯ãå®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã§ããŒãžå šäœããªããŒãããããšãªãã¢ãžã¥ãŒã«ãæŽæ°ã§ãããœãªã¥ãŒã·ã§ã³ãæäŸããŸãããã®æ©èœã¯ããããã¢ãžã¥ãŒã«ãªãã¬ãŒã¹ã¡ã³ãïŒHMRïŒãšãåŒã°ããéçºè ã®çç£æ§ãåçã«åäžããããŠãŒã¶ãŒã®æºè¶³åºŠãé«ããŸããããããäžå¿çãªèª²é¡ã¯æŽæ°ã®åæã«ãããŸããã€ãŸããæŽæ°ãããã³ãŒãã«äŸåãããã¹ãŠã®ã¢ãžã¥ãŒã«ãšã³ã³ããŒãã³ãããäžæãæœåšçãªãšã©ãŒãæå°éã«æããªãããæ£ããäžè²«ããŠæŽæ°ãããããšãä¿èšŒããããšã§ãããã®èšäºã§ã¯ãJavaScriptã¢ãžã¥ãŒã«ãããã¢ããããŒã調æŽãšã³ãžã³å ã§ã®æŽæ°åæã®è€éããæ¢ããé¢é£ããã¡ã«ããºã ã課é¡ããã¹ããã©ã¯ãã£ã¹ãæ€èšŒããŸãã
ãããã¢ãžã¥ãŒã«ãªãã¬ãŒã¹ã¡ã³ãïŒHMRïŒã®çè§£
æŽæ°åæã®è€éãã«èžã¿èŸŒãåã«ãHMRã®åºæ¬ååãçè§£ããããšãäžå¯æ¬ ã§ããåŸæ¥ãã³ãŒãã®å€æŽãçºçããå Žåãéçºè ã¯å€æŽãã¢ããªã±ãŒã·ã§ã³ã«åæ ãããããã«æåã§ãã©ãŠã¶ãæŽæ°ããå¿ èŠããããŸããããã®ããã»ã¹ã¯æéãããããç¹ã«è¿ éãªéçºãµã€ã¯ã«ã§ã¯äžæã䌎ããŸããHMRã¯ã以äžã®æ¹æ³ã§ãã®ããã»ã¹ãèªååããŸãïŒ
- ã³ãŒã倿Žã®æ€åºïŒ ãã¡ã€ã«ã·ã¹ãã ã®å€æŽãç£èŠãã倿Žãããã¢ãžã¥ãŒã«ãç¹å®ããŸãã
- æŽæ°ãããã¢ãžã¥ãŒã«ã®ãã«ãïŒ å€æŽãããã¢ãžã¥ãŒã«ãšãã®äŸåé¢ä¿ã®ã¿ãåã³ã³ãã€ã«ããŸãã
- ã©ã³ã¿ã€ã ã§ã®ã¢ãžã¥ãŒã«ã®çœ®æïŒ å®å šãªãªãã¬ãã·ã¥ãªãã§ããã©ãŠã¶å ã®å€ãã¢ãžã¥ãŒã«ãæ°ãããã®ãšã·ãŒã ã¬ã¹ã«çœ®ãæããŸãã
- ã¢ããªã±ãŒã·ã§ã³ç¶æ ã®ç¶æïŒ ãŠãŒã¶ãŒå ¥åãã¹ã¯ããŒã«äœçœ®ãªã©ãã¢ããªã±ãŒã·ã§ã³ã®çŸåšã®ç¶æ ãç¶æããããšè©Šã¿ãäžæãæå°éã«æããŸãã
WebpackãParcelãBrowserifyãªã©ã®äººæ°ããŒã«ã¯ãçµã¿èŸŒã¿ã®HMRãµããŒããæäŸããçµ±åããã»ã¹ãå¹çåããŸããHMRã䜿çšããå©ç¹ã¯éèŠã§ãïŒ
- éçºè ã®çç£æ§åäžïŒ ããé«éãªãã£ãŒãããã¯ã«ãŒããšéçºæéã®ççž®ã
- ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã®åäžïŒ éçºäžã®ç ©ãããããŒãžå šäœã®åèªã¿èŸŒã¿ããªããªããŸãã
- ã¢ããªã±ãŒã·ã§ã³ç¶æ ã®ç¶æïŒ ã¢ããªã±ãŒã·ã§ã³ãæäœãããŠãŒã¶ãŒãžã®äžæãæžå°ããŸãã
- ãããã°ã®åŒ·åïŒ ãªã¢ã«ã¿ã€ã ã§å€æŽã芳å¯ããããšã§ããã°ã®ç¹å®ãšä¿®æ£ã容æã«ãªããŸãã
æŽæ°åæã®èª²é¡
HMRã¯å€ãã®å©ç¹ãæäŸããŸãããã·ãŒã ã¬ã¹ãªæŽæ°åæãå®çŸããã«ã¯ããªãã®èª²é¡ããããŸããäž»ãªåé¡ã¯ã圱é¿ãåãããã¹ãŠã®ã¢ãžã¥ãŒã«ãæ£ããé åºã§é©åãªã¿ã€ãã³ã°ã§æŽæ°ãããããã«ããäžæŽåããšã©ãŒãé²ãããšã§ãã以äžã¯ããã€ãã®äž»èŠãªèª²é¡ã§ãïŒ
äŸåé¢ä¿ã®ç®¡ç
çŸä»£ã®JavaScriptã¢ããªã±ãŒã·ã§ã³ã¯ãè€éãªäŸåé¢ä¿ãæã€æ°çŸããããã¯æ°åã®ã¢ãžã¥ãŒã«ã§æ§æãããããšããããããŸããããã¢ãžã¥ãŒã«ãæŽæ°ããããšããã®ãã¹ãŠã®äŸåã¢ãžã¥ãŒã«ãäžè²«æ§ãç¶æããããã«æŽæ°ãããªããã°ãªããŸãããããã«ã¯ã圱é¿ãåãããã¹ãŠã®ã¢ãžã¥ãŒã«ãæ£ç¢ºã«ç¹å®ããããããæ£ããé åºã§æŽæ°ãããããšãä¿èšŒããå ç¢ãªäŸåé¢ä¿è¿œè·¡ã¡ã«ããºã ãå¿ èŠã§ããæ¬¡ã®ãããªã·ããªãªãèããŠã¿ãŸãããïŒ
ã¢ãžã¥ãŒã«A -> ã¢ãžã¥ãŒã«B -> ã¢ãžã¥ãŒã«C
ã¢ãžã¥ãŒã«AãæŽæ°ãããå ŽåãHMRãšã³ãžã³ã¯ãå€ãäŸåé¢ä¿ã«ãããšã©ãŒãé²ãããã«ãã¢ãžã¥ãŒã«Bãšã¢ãžã¥ãŒã«Cããã®é åºã§æŽæ°ãããããšãä¿èšŒããªããã°ãªããŸããã
é忿޿°
å€ãã®Webã¢ããªã±ãŒã·ã§ã³ã¯ãAPIåŒã³åºããã€ãã³ããªã¹ããŒãªã©ã®éåææäœã«äŸåããŠããŸãããããã®æäœãé²è¡äžã«ã¢ãžã¥ãŒã«ãæŽæ°ãããšãäºæž¬äžèœãªåäœãããŒã¿äžæŽåã«ã€ãªããå¯èœæ§ããããŸããHMRãšã³ãžã³ã¯ãéåææäœãšæŽæ°ã調æŽããå®å šãªå Žåã«ã®ã¿æŽæ°ãé©çšãããããã«ããå¿ èŠããããŸããããšãã°ãã³ã³ããŒãã³ããAPIããããŒã¿ãååŸããŠãããšãã«æŽæ°ãçºçããå Žåããšã³ãžã³ã¯æŽæ°å®äºåŸã«ã³ã³ããŒãã³ããæ°ããããŒã¿ã§åã¬ã³ããªã³ã°ãããããšãä¿èšŒããå¿ èŠããããŸãã
ç¶æ 管ç
HMRäžã«ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãç¶æããããšã¯ãäžæãæå°éã«æããããã«äžå¯æ¬ ã§ããããããã¢ãžã¥ãŒã«ã®æŽæ°ã¯ãæ éã«æ±ããªããšç¶æ ã®åªå€±ã«ã€ãªããããšããããããŸããHMRãšã³ãžã³ã¯ãæŽæ°äžã«ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãä¿åããã³åŸ©å ããã¡ã«ããºã ãæäŸããå¿ èŠããããŸããããã«ã¯ãç¶æ ããŒã¿ã®ã·ãªã¢ã©ã€ãºãšãã·ãªã¢ã©ã€ãºããŸãã¯Reactã®Context APIãReduxã®ãããªæè¡ã䜿çšããŠã°ããŒãã«ãªç¶æ ã管çããããšãå«ãŸããŸãããŠãŒã¶ãŒããã©ãŒã ã«å ¥åããŠããå Žé¢ãæ³åããŠã¿ãŠãã ãããçæ³çã«ã¯ãæŽæ°ã«ãã£ãŠéšåçã«å ¥åããããã©ãŒã ããŒã¿ãæ¶å»ãããã¹ãã§ã¯ãããŸããã
ã¯ãã¹ãã©ãŠã¶äºææ§
HMRã®å®è£ ã¯ãã©ãŠã¶ããšã«ç°ãªãå¯èœæ§ããããéçºè ã¯äºææ§ã®åé¡ã«å¯ŸåŠããå¿ èŠããããŸããHMRãšã³ãžã³ã¯ããã¹ãŠã®äž»èŠãªãã©ãŠã¶ã§åäœããäžè²«ããAPIãæäŸãããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ãããšã¯ã¹ããªãšã³ã¹ãä¿èšŒããå¿ èŠããããŸããããã«ã¯ããã©ãŠã¶ã®æåã®éãã«å¯ŸåŠããããã«ããã©ãŠã¶åºæã®ããªãã£ã«ãã·ã ã䜿çšããããšãå«ãŸããå ŽåããããŸãã
ãšã©ãŒãã³ããªã³ã°
HMRäžã®ãšã©ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¯ã©ãã·ã¥ãäºæãã¬åäœã«ã€ãªããå¯èœæ§ããããŸããHMRãšã³ãžã³ã¯ããšã©ãŒãæ€åºããããããåªé ã«å埩ã§ããå ç¢ãªãšã©ãŒãã³ããªã³ã°ã¡ã«ããºã ãæäŸããå¿ èŠããããŸããããã«ã¯ããšã©ãŒã®ãã°èšé²ããŠãŒã¶ãŒãžã®ãšã©ãŒã¡ãã»ãŒãžã®è¡šç€ºããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã®ä»¥åã®ããŒãžã§ã³ãžã®åŸ©åž°ãå«ãŸããŸããæŽæ°ã«ãã£ãŠæ§æãšã©ãŒãå°å ¥ãããç¶æ³ãèããŠã¿ãŸããããHMRãšã³ãžã³ã¯ããã®ãšã©ãŒãæ€åºããã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ããã®ãé²ãããšãã§ããã¹ãã§ãã
æŽæ°åæã®ã¡ã«ããºã
æŽæ°åæã®èª²é¡ã«å¯ŸåŠããããã«ãHMRãšã³ãžã³ã¯ããŸããŸãªã¡ã«ããºã ãæ¡çšããŠããŸãïŒ
äŸåé¢ä¿ã°ã©ãã®ãã©ããŒãµã«
HMRãšã³ãžã³ã¯éåžžãã¢ãžã¥ãŒã«éã®é¢ä¿ã衚ãäŸåé¢ä¿ã°ã©ããç¶æããŸããã¢ãžã¥ãŒã«ãæŽæ°ããããšããšã³ãžã³ã¯ã°ã©ãããã©ããŒã¹ããŠåœ±é¿ãåãããã¹ãŠã®ã¢ãžã¥ãŒã«ãç¹å®ããæ£ããé åºã§æŽæ°ããŸããããã«ã¯ãæ·±ãåªå æ¢çŽ¢ãå¹ åªå æ¢çŽ¢ãªã©ã®ã¢ã«ãŽãªãºã ã䜿çšããŠã°ã©ããå¹ççã«ãã©ããŒã¹ããããšãå«ãŸããŸããããšãã°ãWebpackã¯ã¢ãžã¥ãŒã«ã°ã©ãã䜿çšããŠäŸåé¢ä¿ã远跡ããæŽæ°é åºã決å®ããŸãã
ã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ç®¡ç
äžè²«æ§ã確ä¿ããããã«ãHMRãšã³ãžã³ã¯ãã°ãã°ã¢ãžã¥ãŒã«ã«ããŒãžã§ã³ãå²ãåœãŠãŸããã¢ãžã¥ãŒã«ãæŽæ°ããããšããã®ããŒãžã§ã³ãã€ã³ã¯ãªã¡ã³ããããŸãããšã³ãžã³ã¯ãã®åŸãçŸåšã®ã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ãšæŽæ°ãããã¢ãžã¥ãŒã«ã®ããŒãžã§ã³ãæ¯èŒããŠãã©ã®ã¢ãžã¥ãŒã«ã眮ãæããå¿ èŠããããã倿ããŸãããã®ã¢ãããŒãã¯ç«¶åãé²ããå¿ èŠãªã¢ãžã¥ãŒã«ã®ã¿ãæŽæ°ãããããšãä¿èšŒããŸããGitãªããžããªã®ããã«èããŠãã ãããåã³ããããã³ãŒãã®ããŒãžã§ã³ã衚ããŸãã
æŽæ°å¢ç
æŽæ°å¢çã¯ãæŽæ°ã®ç¯å²ãå®çŸ©ããŸããããã«ãããéçºè
ã¯ã¢ãžã¥ãŒã«ã倿Žããããšãã«ã¢ããªã±ãŒã·ã§ã³ã®ã©ã®éšåãæŽæ°ãã¹ãããæå®ã§ããŸããããã¯ãæŽæ°ãåé¢ããäžèŠãªåã¬ã³ããªã³ã°ãé²ãã®ã«åœ¹ç«ã¡ãŸããããšãã°ãReactã§ã¯ãReact.memo
ãshouldComponentUpdate
ã®ãããªã³ã³ããŒãã³ãã䜿çšããŠã圱é¿ãåããªãã³ã³ããŒãã³ãã®åã¬ã³ããªã³ã°ãé²ãããã«æŽæ°å¢çãå®çŸ©ã§ããŸãã
ã€ãã³ããã³ããªã³ã°
HMRãšã³ãžã³ã¯ãã€ãã³ãã䜿çšããŠã¢ãžã¥ãŒã«ã«æŽæ°ãéç¥ããŸããã¢ãžã¥ãŒã«ã¯ãããã®ã€ãã³ãã賌èªããç¶æ ã®æŽæ°ãUIã®åã¬ã³ããªã³ã°ãªã©ãå¿ èŠãªã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸããããã«ãããã¢ãžã¥ãŒã«ã¯å€æŽã«åçã«åå¿ããäžè²«æ§ãç¶æã§ããŸããããšãã°ãã³ã³ããŒãã³ãã¯æŽæ°ã€ãã³ãã賌èªããã€ãã³ããããªã¬ãŒããããšãã«APIããæ°ããããŒã¿ãååŸãããããããŸããã
ããŒã«ããã¯ã¡ã«ããºã
ãšã©ãŒãçºçããå ŽåãHMRãšã³ãžã³ã¯ã¢ããªã±ãŒã·ã§ã³ã®ä»¥åã®ããŒãžã§ã³ã«æ»ãããã®ããŒã«ããã¯ã¡ã«ããºã ãæäŸãã¹ãã§ããããã«ã¯ãã¢ãžã¥ãŒã«ã®ä»¥åã®ããŒãžã§ã³ãä¿åããæŽæ°äžã«ãšã©ãŒãçºçããå Žåã«ãããã埩å ããããšãå«ãŸããŸããããã¯ãå®å®æ§ãæãéèŠèŠãããæ¬çªç°å¢ã§ã¯ç¹ã«éèŠã§ãã
广çãªæŽæ°åæã䌎ãHMRå®è£ ã®ãã¹ããã©ã¯ãã£ã¹
HMRã广çã«å®è£ ããã·ãŒã ã¬ã¹ãªæŽæ°åæã確ä¿ããããã«ã以äžã®ãã¹ããã©ã¯ãã£ã¹ãæ€èšããŠãã ããïŒ
ã°ããŒãã«ãªç¶æ ãæå°åãã
ã°ããŒãã«ãªç¶æ ã¯ãæŽæ°ã®ç®¡çãšäžè²«æ§ã®ç¶æãå°é£ã«ããå¯èœæ§ããããŸããã°ããŒãã«å€æ°ã®äœ¿çšãæå°éã«æããããŒã«ã«ãªç¶æ ãŸãã¯ReduxãVuexã®ãããªç¶æ 管çã©ã€ãã©ãªãåªå ããŠãã ããããããã¯ç¶æ ã®æŽæ°ãããè¯ãå¶åŸ¡ã§ããŸããäžå åãããç¶æ 管çãœãªã¥ãŒã·ã§ã³ã䜿çšãããšãåäžã®ä¿¡é Œã§ããæ å ±æºãæäŸãããHMRäžã®ç¶æ ã®è¿œè·¡ãšæŽæ°ã容æã«ãªããŸãã
ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã䜿çšãã
ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã¯ãã¢ãžã¥ãŒã«ãç¬ç«ããŠåé¢ããæŽæ°ããããšã容æã«ããŸããã¢ããªã±ãŒã·ã§ã³ããæç¢ºãªäŸåé¢ä¿ãæã€å°ãããããå®çŸ©ãããã¢ãžã¥ãŒã«ã«åå²ããŠãã ãããããã«ãããæŽæ°ã®ç¯å²ãçãŸããç«¶åã®ãªã¹ã¯ãæå°éã«æããããŸããããã³ããšã³ãã«é©çšããããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®ããã«èããŠãã ããã
æç¢ºãªæŽæ°å¢çãå®è£ ãã
æŽæ°ã®ç¯å²ãå¶éããããã«ãæç¢ºãªæŽæ°å¢çãå®çŸ©ããŠãã ãããReact.memo
ãshouldComponentUpdate
ã®ãããªãã¯ããã¯ã䜿çšããŠãäžèŠãªåã¬ã³ããªã³ã°ãé²ããŸããããã«ãããããã©ãŒãã³ã¹ãåäžããäºæãã¬åäœã®ãªã¹ã¯ãæžå°ããŸããé©åã«å®çŸ©ãããå¢çã«ãããHMRãšã³ãžã³ã¯æŽæ°ãããæ£ç¢ºã«ã¿ãŒã²ããã«ããäžæãæå°éã«æããããšãã§ããŸãã
éåææäœãæ éã«æ±ã
ããŒã¿ã®äžæŽåãé²ãããã«ãéåææäœãšæŽæ°ã調æŽããŠãã ãããPromiseãasync/awaitã®ãããªãã¯ããã¯ã䜿çšããŠéåææäœã管çããå®å šãªå Žåã«ã®ã¿æŽæ°ãé©çšãããããã«ããŸããéåææäœãé²è¡äžã«ã¢ãžã¥ãŒã«ãæŽæ°ããããšã¯é¿ããŠãã ããã代ããã«ãæäœãå®äºããã®ãåŸ ã£ãŠããæŽæ°ãé©çšããŠãã ããã
培åºçã«ãã¹ããã
HMRå®è£ ã培åºçã«ãã¹ãããŠãæŽæ°ãæ£ããé©çšãããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ ãç¶æãããããšã確èªããŠãã ãããåäœãã¹ããšçµ±åãã¹ããäœæããŠãæŽæ°äžã®ã¢ããªã±ãŒã·ã§ã³ã®åäœãæ€èšŒããŸããèªåãã¹ãã¯ãHMRãæåŸ ã©ããã«æ©èœããæŽæ°ããªã°ã¬ãã·ã§ã³ãåŒãèµ·ãããªãããšãä¿èšŒããããã«äžå¯æ¬ ã§ãã
ç£èŠãšãã°èšé²
HMRå®è£ ã®ãšã©ãŒãããã©ãŒãã³ã¹ã®åé¡ãç£èŠããŠãã ããããã¹ãŠã®æŽæ°ã€ãã³ããšãšã©ãŒã¡ãã»ãŒãžããã°ã«èšé²ããŠãåé¡ã®èšºæã«åœ¹ç«ãŠãŠãã ãããç£èŠããŒã«ã䜿çšããŠãæŽæ°äžã®ã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã远跡ããŸããå æ¬çãªç£èŠãšãã°èšé²ã«ãããHMRãšæŽæ°åæã«é¢é£ããåé¡ãè¿ éã«ç¹å®ãã解決ããããšãã§ããŸãã
äŸïŒReactãšFast RefreshïŒHMRã®äžçš®ïŒ
React Fast Refreshã¯ãã³ã³ããŒãã³ãã®ç¶æ ã倱ãããšãªãReactã³ã³ããŒãã³ããã»ãŒç¬æã«æŽæ°ã§ãã人æ°ã®HMRãœãªã¥ãŒã·ã§ã³ã§ããããã¯æ¬¡ã®ããã«æ©èœããŸãïŒ
- ã³ã³ããŒãã³ãã®èšè£ ïŒ Reactã³ã³ããŒãã³ãã«ã³ãŒãã远å ããŠã倿Žã远跡ããæŽæ°ãããªã¬ãŒããŸãã
- æŽæ°ãããã³ã³ããŒãã³ãã®çœ®æïŒ ã³ã³ããŒãã³ãããªãŒå ã®æŽæ°ãããã³ã³ããŒãã³ãã®ã¿ã眮ãæããŸãã
- ã³ã³ããŒãã³ãç¶æ ã®ç¶æïŒ æŽæ°ãããã³ã³ããŒãã³ãã®ç¶æ ãç¶æããããšè©Šã¿ãŸãã
React Fast Refreshã䜿çšããã«ã¯ãéåžžãreact-refresh
ããã±ãŒãžãã€ã³ã¹ããŒã«ãããã«ãããŒã«ïŒäŸïŒWebpackïŒãreact-refresh-webpack-plugin
ã䜿çšããããã«èšå®ããå¿
èŠããããŸãã以äžã¯Webpackãèšå®ããåºæ¬çãªäŸã§ãïŒ
// webpack.config.js const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); module.exports = { // ... other webpack configurations plugins: [ new ReactRefreshWebpackPlugin(), ], };
React Fast Refreshã䜿çšãããšãReactã³ã³ããŒãã³ãã«å€æŽãå ãããã®å€æŽãã³ã³ããŒãã³ãã®ç¶æ ã倱ãããšãªããã»ãŒç¬æã«ãã©ãŠã¶ã«åæ ãããã®ã確èªã§ããŸããããã«ãããéçºè ã®çç£æ§ãåçã«åäžãããããã°ãã¯ããã«ç°¡åã«ãªããŸãã
é«åºŠãªèæ ®äºé
ããè€éãªã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠã¯ã以äžã®é«åºŠãªèæ ®äºé ãæ€èšããŠãã ããïŒ
ã³ãŒãåå²
ã³ãŒãåå²ã䜿çšãããšãã¢ããªã±ãŒã·ã§ã³ããªã³ããã³ãã§èªã¿èŸŒããå°ããªãã£ã³ã¯ã«åå²ã§ããŸããããã«ãããã¢ããªã±ãŒã·ã§ã³ã®åæèªã¿èŸŒã¿æéãççž®ãããããã©ãŒãã³ã¹ãåäžããŸããHMRã§ã³ãŒãåå²ã䜿çšããå ŽåãæŽæ°ãæ£ãããã£ã³ã¯ã«é©çšããããã£ã³ã¯éã®äŸåé¢ä¿ãæ£ããåŠçãããããšã確èªããå¿ èŠããããŸããWebpackã®åçã€ã³ããŒãã¯ãã³ãŒãåå²ãå®è£ ããäžè¬çãªæ¹æ³ã§ãã
ãã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£
ãã€ã¯ãããã³ããšã³ãã¢ãŒããã¯ãã£ã¯ãã¢ããªã±ãŒã·ã§ã³ãç¬ç«ããŠãããã€å¯èœãªåäœã«åå²ããããšãå«ã¿ãŸããHMRã§ãã€ã¯ãããã³ããšã³ãã䜿çšããå Žåããã¹ãŠã®ãã€ã¯ãããã³ããšã³ãéã§æŽæ°ã調æŽããããã€ã¯ãããã³ããšã³ãéã®äŸåé¢ä¿ãæ£ããåŠçãããããšã確èªããå¿ èŠããããŸããããã«ã¯ã忣ç°å¢ã§æŽæ°ãåŠçã§ããå ç¢ãªèª¿æŽã¡ã«ããºã ãå¿ èŠã§ããäžã€ã®ã¢ãããŒãã¯ãå ±æã€ãã³ããã¹ãŸãã¯ã¡ãã»ãŒãžãã¥ãŒã䜿çšããŠãã€ã¯ãããã³ããšã³ãéã§æŽæ°ã€ãã³ããéä¿¡ããããšã§ãã
ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒ
ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ã䜿çšããå ŽåãæŽæ°ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ã«é©çšãããããšã確èªããå¿ èŠããããŸããããã«ã¯ããµãŒããŒãµã€ãHMRã®ãããªãã¯ããã¯ã䜿çšããããã¢ãžã¥ãŒã«ãæŽæ°ããããšãã«ãµãŒããŒã§ã¢ããªã±ãŒã·ã§ã³ãåã¬ã³ããªã³ã°ããããšãå«ãŸããå ŽåããããŸãããµãŒããŒãšã¯ã©ã€ã¢ã³ãéã®æŽæ°ã®èª¿æŽã¯ãç¹ã«éåææäœãç¶æ 管çãæ±ãå Žåã«å°é£ã«ãªãããšããããŸããäžã€ã®ã¢ãããŒãã¯ããµãŒããŒãšã¯ã©ã€ã¢ã³ãã®äž¡æ¹ããã¢ã¯ã»ã¹ã§ããå ±æç¶æ ã³ã³ããã䜿çšããããšã§ãã
çµè«
JavaScriptã¢ãžã¥ãŒã«ãããã¢ããããŒã調æŽãšã³ãžã³ã¯ãéçºè ã®çç£æ§ãåäžããããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã匷åããããã®åŒ·åãªããŒã«ã§ããããããã·ãŒã ã¬ã¹ãªæŽæ°åæãå®çŸããã«ã¯ãæ éãªèšç»ãšå®è£ ãå¿ èŠã§ãããã®èšäºã§æŠèª¬ãã課é¡ãçè§£ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãHMRã广çã«å®è£ ããã³ãŒãã®ãããã€äžã«ã¢ããªã±ãŒã·ã§ã³ãå®å®ããŠå¿çæ§ãä¿ã€ããšãä¿èšŒã§ããŸããWebã¢ããªã±ãŒã·ã§ã³ã®è€éããå¢ãç¶ããã«ã€ããŠã广çãªæŽæ°åæãåããå ç¢ãªHMRå®è£ ã¯ãé«å質ãªéçºäœéšãç¶æããåè¶ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ãŸããŸãéèŠã«ãªãã§ããããJavaScriptãšã³ã·ã¹ãã ãé²åãç¶ããäžã§ãã©ã³ã¿ã€ã ã§ã®ã¢ãžã¥ãŒã«æŽæ°ããã»ã¹ãããã«ç°¡çŽ åãããŠãŒã¶ãŒãžã®äžæãæå°éã«æãããããã«æŽç·ŽãããHMRãœãªã¥ãŒã·ã§ã³ãç»å ŽããããšãæåŸ ãããŸãã