倧éãªã¹ããé«éåãã Vue 3 管çUI ããã©ãŒãã³ã¹ãã§ãã¯ãªã¹ã
ä»®æ³åããããŠã³ã¹æ€çŽ¢ãã³ã³ããŒãã³ãã®ã¡ã¢åãå®å®ããèªã¿èŸŒã¿ç¶æ ã§éããªã¹ããé«éåããããã® Vue 3 管ç UI ããã©ãŒãã³ã¹ãã§ãã¯ãªã¹ãã

ãªãéã管çãªã¹ãã¯é ãæããã®ã
ãŠãŒã¶ãŒãèšãã®ã¯å€§æµããã®ã³ã³ããŒãã³ãã¯éå¹çã ããšããããšã§ã¯ãããŸãããç»é¢ãããã€ããšæããŸãïŒã¹ã¯ããŒã«ãåŒã£ããããå ¥åãé ãããã¯ãªãã¯ã®åå¿ãã¯ã³ãã³ãé ããããŒã¿ãæ£ãããŠãããã®é ãããããšäººã¯ãããããããŒã«ãä¿¡é ŒããªããªããŸãã
管ç UI ã¯ãªã¹ãããåãªããªã¹ããã§ã¯ãªãããããã«éããªããŸããåäžã®ããŒãã«ã«äœåè¡ãã®è¡ãããããã®åããããžãã¡ãã¥ãŒãã¢ãã¿ãŒãããŒã«ããããã€ã³ã©ã€ã³ç·šéãå«ãããšããããŸãããœãŒããè€æ°ãã£ã«ã¿ãã©ã€ãæ€çŽ¢ã远å ãããšãããŒãžã¯å°ããªå€æŽããšã«å€§ããªä»äºãããããã«ãªããŸãã
人ãæåã«æ°ã¥ãã®ã¯åçŽãªããšã§ãïŒã¹ã¯ããŒã«ã§ãã¬ãŒã ãèœã¡ããæ€çŽ¢ãæã®åãã«è¿œãã€ããªããè¡ã¡ãã¥ãŒãé ããŠéãããŸãšãéžæã§ããªãŒãºãããèªã¿èŸŒã¿ç¶æ ãç¹æ» ãããããŒãžããªã»ãããããã
å éšã§èµ·ããŠãããã¿ãŒã³ãåçŽã§ãïŒããŸãã«å€ãã®ãã®ãé »ç¹ã«åã¬ã³ããŒããããããŒå ¥åããã£ã«ã¿ãåŒãèµ·ããããã£ã«ã¿ãããŒãã«æŽæ°ãåŒã³ããã¹ãŠã®è¡ãã»ã«ãåæ§ç¯ããŸããåè¡ãå®äŸ¡ãªãäœãšãããéãããŸãããåè¡ãå°ããªã¢ããªã«è¿ããªããæ¯åã³ã¹ããæ¯æãããšã«ãªããŸãã
Vue 3 管ç UI ã®ããã©ãŒãã³ã¹ãã§ãã¯ãªã¹ãã¯ãã³ãããŒã¯ã«åã€ããã®ãã®ã§ã¯ãããŸãããå ¥åã®æ»ããããã¹ã¯ããŒã«ã®å®å®ãã¯ãªãã¯ã®åå¿æ§ããããŠãŠãŒã¶ãŒã®éªéãããªã鲿ã®å¯èŠåãä¿ã€ããã®ãã®ã§ãã
è¯ããã¥ãŒã¹ã¯ãå°ããªå€æŽã倧ããªæžãçŽãã«åã€ããšãå€ãç¹ã§ããã¬ã³ããªã³ã°ããè¡ãæžããïŒä»®æ³åïŒãããŒå ¥åããšã®åŠçãæžããïŒãããŠã³ã¹ïŒãé«ã³ã¹ããªã»ã«ã®åå®è¡ãé²ãïŒã¡ã¢åïŒãããŒãžããžã£ã³ãããªãèªã¿èŸŒã¿ç¶æ ãèšèšããââããã ãã§æ¹åãèŠããŸãã
äœããå€ããåã«èšæž¬ãã
ããŒã¹ã©ã€ã³ãªãã§èª¿æŽãããšãééã£ããã®ããçŽããŠããŸããããšãç°¡åã«èµ·ãããŸããé ã管çç»é¢ãäžã€éžã³ïŒãŠãŒã¶ãŒäžèЧããã±ãããã¥ãŒã泚æäžèЧãªã©ïŒãäœæã§ããç®æšãå®çŸ©ããŠãã ããïŒã¹ã¯ããŒã«ãæ»ããã§æ€çŽ¢å ¥åã«ã©ã°ããªãããªã©ã
ãŸãé ããåçŸãããããããããã¡ã€ã«ãåããŸãã
ãã©ãŠã¶ã® Performance ããã«ã§çãã»ãã·ã§ã³ãèšé²ããŠãã ããïŒãªã¹ããèªã¿èŸŒã¿ãæ°ç§éæ¿ããã¹ã¯ããŒã«ãããã®åŸæ€çŽ¢ã«æåãæã¡ãŸããã¡ã€ã³ã¹ã¬ããã§ã®é·ãã¿ã¹ã¯ããæ°ããåäœããªãã¯ããªã®ã«ç¹°ãè¿ãçºçããã¬ã€ã¢ãŠãïŒãã€ã³ãäœæ¥ãæ¢ããŸãã
次㫠Vue Devtools ãéããå®éã«äœãåã¬ã³ããŒãããŠãããã確èªããŸãããã1ã€ã®ããŒå ¥åã§ããŒãã«å šäœããã£ã«ã¿ãããŒãžããããŒãåã¬ã³ããŒããããªãããããå ¥åé å»¶ã®åå ã§ããããšãå€ãã§ãã
åŸã§æ¹åã確èªã§ããããã«ããã€ãã®ææšã远跡ããŸãïŒ
- æåã«äœ¿ãããªã¹ãã衚瀺ããããŸã§ã®æéïŒåãªãã¹ãããŒã§ã¯ãªãïŒ
- ã¹ã¯ããŒã«ã®äœæïŒæ»ããïŒæç¶çïŒ
- å ¥åæã®é å»¶ïŒæåã¯å³åº§ã«è¡šç€ºããããïŒ
- ããŒãã«ã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°æé
- ãªã¹ã API åŒã³åºãã®ãããã¯ãŒã¯æé
æåŸã«ããã«ããã¯ãã©ãã«ãããã確èªããŸããç°¡åãªãã¹ãã¯ãããã¯ãŒã¯ãã€ãºãæžããããšã§ãããã£ãã·ã¥ãããããŒã¿ã§ã UI ãããã€ããªãäž»ã«ã¬ã³ããªã³ã°ãåå ã§ããUI ã¯æ»ããã§ãçµæã®å°çãé ããªããããã¯ãŒã¯æéãã¯ãšãªãµã€ãºããµãŒãåŽãã£ã«ã¿ã«æ³šåããŠãã ããã
倧ããªãªã¹ããããŒãã«ã¯ä»®æ³åãã
ä»®æ³åã¯ã管çç»é¢ã§æ°çŸãæ°åè¡ãäžåºŠã«ã¬ã³ããªã³ã°ããå Žåãæã倧ããªåå©ã«ãªãããšãå€ãã§ãããã¹ãŠã®è¡ã DOM ã«çœ®ã代ããã«ããã¥ãŒããŒãã«èŠããŠãããã®ã ãïŒå°ããªãããã¡ãå«ãïŒãã¬ã³ããªã³ã°ããŸããããã«ããã¬ã³ããªã³ã°æéãçããªããã¡ã¢ãªäœ¿çšéãäžãããã¹ã¯ããŒã«ãå®å®ããŸãã
é©åãªã¢ãããŒããéžã¶
é·ãããŒã¿ã»ãããæ»ããã«ã¹ã¯ããŒã«ããå¿ èŠããããªãä»®æ³ã¹ã¯ããŒã«ïŒãŠã£ã³ããŠã€ã³ã°ïŒãæé©ã§ããããŒãžåäœã§ç§»åããå Žé¢ããµãŒãåŽã¯ãšãªãåçŽã«ãããå Žåã¯ããŒãžããŒã·ã§ã³ãè¯ãã§ããã³ã³ãããŒã«ãå°ãªããã€ã€å·šå€§ãª DOM ãé¿ãããå Žåã¯ãããã«èªã¿èŸŒãããã¿ãŒã³ãæå¹ã§ãã
倧ãŸããªç®å®ïŒ
- 0ã200 è¡ïŒéåžžã¬ã³ããªã³ã°ã§åé¡ãªãããšãå€ã
- 200ã2,000 è¡ïŒUX ã«å¿ããŠä»®æ³åãããŒãžããŒã·ã§ã³
- 2,000 è¡ä»¥äžïŒä»®æ³åïŒãµãŒãåŽãã£ã«ã¿ïŒãœãŒã
ä»®æ³åãå®å®ããã
ä»®æ³ãªã¹ãã¯åè¡ã®é«ããäºæž¬å¯èœãªãšãã«æã广çã§ããã¬ã³ããªã³ã°åŸã«è¡é«ããå€ãããšïŒç»åã®èªã¿èŸŒã¿ãããã¹ãã®æãè¿ããå±éã»ã¯ã·ã§ã³ãªã©ïŒãã¹ã¯ããŒã©ãŒã¯å枬å®ãããªããã°ãªãããã¹ã¯ããŒã«ããžã£ã³ããããã¬ã€ã¢ãŠããä¹±ããŸãã
å®å®ãããæ¹æ³ïŒ
- å¯èœãªãåºå®è¡é«ããŸãã¯éãããæ¢ç¥ã®é«ãã®ã»ããã䜿ã
- å¯å€ã³ã³ãã³ãïŒã¿ã°ãã¡ã¢ïŒã¯ã¯ã©ã³ãããŠè©³çްãã¥ãŒã§å±éãã
- åè¡ã«åŒ·åã§ãŠããŒã¯ãªããŒã䜿ãïŒé åã€ã³ããã¯ã¹ã¯æ±ºããŠäœ¿ããªãïŒ
- ã¹ãã£ãããŒããããŒã¯ä»®æ³åãããæ¬æã®å€ã«çœ®ã
- ã©ãããŠãå¯å€é«ãããµããŒããããªã枬å®ãæå¹ã«ããã»ã«ãã·ã³ãã«ã«ä¿ã€
äŸïŒãã±ããããŒãã«ã« 10,000 è¡ããããªããããŒãã«æ¬æãä»®æ³åããŠè¡é«ããäžè²«ããïŒã¹ããŒã¿ã¹ãä»¶åãæ åœè ïŒãé·æã¡ãã»ãŒãžã¯è©³çްããã¯ãŒã®èåŸã«çœ®ããŠã¹ã¯ããŒã«ãæ»ããã«ããŸãã
ãããŠã³ã¹æ€çŽ¢ãšè³¢ããã£ã«ã¿ãªã³ã°
æ€çŽ¢ããã¯ã¹ã¯é«éãªããŒãã«ãé ãæããããããšããããŸããåé¡ã¯éåžžãã£ã«ã¿èªäœã§ã¯ãªãããã®é£éåå¿ã§ãïŒåããŒå ¥åãã¬ã³ããŒããŠã©ããã£ãŒããã°ãã°ãªã¯ãšã¹ããåŒãèµ·ãããŸãã
ãããŠã³ã¹ã¯ããŠãŒã¶ãŒãå ¥åãæ¢ããŠããå°ãåŸ ã¡ãäžåºŠã ãåŠçãããããšãæå³ããŸããå€ãã®ç®¡çç»é¢ã§ã¯ 200ã400 ms ããèœã¡çããŠããŠåå¿ãè¯ãé©åãªç¯å²ã§ãã空çœã®ããªã ã 2ã3 æåæªæºã®æ€çŽ¢ãç¡èŠããããšããããŒã¿ã«åãã°æ€èšããŠãã ããã
ãã£ã«ã¿ãªã³ã°æŠç¥ã¯ããŒã¿ã»ããã®ãµã€ãºãšã«ãŒã«ã«åãããã¹ãã§ãïŒ
- æ°çŸè¡ä»¥äžã§å šãŠèªã¿èŸŒãã§ãããªãã¯ã©ã€ã¢ã³ãåŽãã£ã«ã¿ã§åå
- æ°åè¡ããããŸãã¯æš©éãå³ããå Žåã¯ãµãŒãã«ååããæãã
- ãã£ã«ã¿ãé«ã³ã¹ãïŒæéæå®ãè€éãªã¹ããŒã¿ã¹ããžãã¯ïŒãªããµãŒãåŽãžæŒãåºã
- äž¡æ¹å¿ èŠãªãæ··åã¢ãããŒãïŒçŽ æ©ãã¯ã©ã€ã¢ã³ãåŽã®çµã蟌ã¿âæçµçµæã¯ãµãŒãã§ååŸ
ãµãŒãåŒã³åºãæã¯å€ãçµæãžã®å¯ŸåŠãããŠãã ãããããšãã°ãŠãŒã¶ãŒããinvããšå
¥åããŠçŽ æ©ããinvoiceããšç¶ããå Žåãå
ã«åºãèŠæ±ãåŸããè¿ã£ãŠã㊠UI ãäžæžãããŠããŸãå¯èœæ§ããããŸãã以åã®ãªã¯ãšã¹ãããã£ã³ã»ã«ããïŒfetch ã® AbortController ã HTTP ã¯ã©ã€ã¢ã³ãã®ãã£ã³ã»ã«æ©èœïŒããŸãã¯ãªã¯ãšã¹ã ID ã远跡ããŠææ°ä»¥å€ãç¡èŠããæ¹æ³ããããŸãã
èªã¿èŸŒã¿ç¶æ ã¯é床ãšåããããéèŠã§ããããŒå ¥åããšã«å šç»é¢ã¹ãããŒãåºãã®ã¯é¿ããŸããããèœã¡çãããããŒã®äŸïŒãŠãŒã¶ãŒãå ¥åäžã¯äœããã«ãã«ãããªããã¢ããªãæ€çŽ¢äžã¯å ¥åè¿èŸºã«å°ããªã€ã³ã©ã€ã³ã®ã€ã³ãžã±ãŒã¿ã衚瀺ãçµææŽæ°æã¯ã42 ä»¶ã衚瀺äžãã®ãããªæ§ããã§æç¢ºãªè¡šç€ºãçµæããªããšãã¯ãäžèŽãªãããšè¡šç€ºããŠç©ºã®ã°ãªãããæŸçœ®ããªãã
ã¡ã¢åã³ã³ããŒãã³ããšå®å®ããã¬ã³ããªã³ã°
é ã管çããŒãã«ã®å€ãã¯ãããŒã¿ãå€ããããé ãã®ã§ã¯ãªããåãã»ã«ãäœåºŠãåã¬ã³ããŒãããããé ããªã£ãŠããŸãã
äœãåã¬ã³ããŒãåŒãèµ·ããããèŠã€ãã
ç¹°ãè¿ãæŽæ°ãçºçããäžè¬çãªç¿æ £ã¯æ¬¡ã®éãã§ãïŒ
- 衚瀺ã«å¿ èŠãªãã£ãŒã«ãã ãã§ã¯ãªã倧ããªãªã¢ã¯ãã£ããªããžã§ã¯ãã props ã«æž¡ããŠãã
- ãã³ãã¬ãŒãå ã§ã€ã³ã©ã€ã³é¢æ°ãäœæããŠããïŒã¬ã³ããŒããšã«æ°ãããªãïŒ
- 倧ããªé åãè¡ãªããžã§ã¯ãã«å¯Ÿãã deep watcher ã䜿ã£ãŠãã
- åã»ã«ã§æ°ããé åããªããžã§ã¯ãããã³ãã¬ãŒãå ã§äœã£ãŠãã
- åæŽæ°ã§ãã©ãŒãããåŠçïŒæ¥æãé貚ãããŒã¹ïŒãããŠãã
props ããã³ãã©ã®ã¢ã€ãã³ãã£ãã£ãå€ãããšãVue ã¯åãæŽæ°ãå¿ èŠãšããå¯èœæ§ããããšèŠãªããŸããèŠãç®ã«å€åããªããŠãæŽæ°ãããŠããŸãã®ã§ãã
props ãå®å®ãããã¡ã¢åãã
ãŸãã¯å°ããå®å®ãã props ãæž¡ãããšããå§ããŸããåã»ã«ã« row ãªããžã§ã¯ãå
šäœãæž¡ãã®ã§ã¯ãªããrow.id ãšãã®ã»ã«ã衚瀺ããç¹å®ãã£ãŒã«ãã ããæž¡ãããã«ããŸããããæŽŸçå€ã¯ computed ã«ç§»ããå
¥åãå€ãã£ããšãã ãåèšç®ãããããã«ããŸãã
è¡ã®äžéšããã£ãã«å€ãããªãå Žå㯠v-memo ã圹ç«ã¡ãŸããå®å®ããå
¥åïŒäŸãã° row.id ãš row.statusïŒã«åºã¥ããŠéçéšåãã¡ã¢åããã°ãæ€çŽ¢äžã®å
¥åããããŒããã¹ãŠã®ã»ã«ã®åå®è¡ã匷å¶ããã®ãé²ããŸãã
ãŸãé«ã³ã¹ããªåŠçãã¬ã³ããŒãã¹ããå€ããŠãã ãããæ¥æãäžåºŠã ãæŽåœ¢ããïŒäŸãã° id ãããŒã«ãã computed ãããã§ä¿æïŒããããã¯ãµãŒãã§æŽåœ¢ããŠè¿ãã®ãçã«ããªãå ŽåããããŸããäžè¬çãªåã¡çã¯ãäœçŸè¡ã«ãããã£ãŠ new Date() ãæ¯ååŒã¶ã®ããããããšã§ãã
ç®æšã¯åçŽã§ãïŒã¢ã€ãã³ãã£ãã£ãå®å®ããããã³ãã¬ãŒãå ã®äœæ¥ãæžãããæ¬åœã«å€ãã£ãéšåã ããæŽæ°ããããšã
äœæãéããªãè³¢ãèªã¿èŸŒã¿ç¶æ
ãªã¹ããå®éããé ãæããããã®ã¯ UI ãé »ç¹ã«ãžã£ã³ãããããã§ããè¯ãèªã¿èŸŒã¿ç¶æ ã¯åŸ ã¡æéãäºæž¬å¯èœã«ããŸãã
ã¹ã±ã«ãã³è¡ã¯ããŒã¿ã®åœ¢ãåãã£ãŠããïŒããŒãã«ãã«ãŒããã¿ã€ã ã©ã€ã³ïŒå Žåã«æå¹ã§ããã¹ãããŒã¯äœãåŸ ã£ãŠããããäŒããŸãããã¹ã±ã«ãã³ã¯äœè¡åããã¢ã¯ã·ã§ã³ã¯ã©ãã«åºãããã¬ã€ã¢ãŠãã¯ã©ããªããã瀺ããŠæåŸ ãèšå®ããŸãã
ããŒã¿ããªãã¬ãã·ã¥ããïŒããŒãžã³ã°ããœãŒãããã£ã«ã¿ïŒãšãã¯ãæ°ãããªã¯ãšã¹ãäžãåã®çµæãç»é¢ã«æ®ããŠãã ãããå°ããªãæŽæ°äžããã³ãã衚瀺ããŠããŒãã«ãæ¶ããªãããšã§ããŠãŒã¶ãŒã¯æŽæ°äžãèªã¿ç¶ããã確èªãããã§ããŸãã
éšåçãªèªã¿èŸŒã¿ã¯å šäœã®ãããã¯ããåªãã
ãã¹ãŠãåçµãããå¿ èŠã¯ãããŸãããããŒãã«èªã¿èŸŒã¿äžããã£ã«ã¿ããŒã¯è¡šç€ºãããŸãŸäžæçã«ç¡å¹ã«ãããè¡ã¢ã¯ã·ã§ã³ã«è¿œå ããŒã¿ãå¿ èŠãªããã¯ãªãã¯ããè¡ã ãã«ä¿çç¶æ ã衚瀺ããŠããŒãžå šäœããããã¯ããªãããã«ããã
å®å®ãããã¿ãŒã³äŸïŒ
- æåã®èªã¿èŸŒã¿ïŒã¹ã±ã«ãã³è¡
- ãªãã¬ãã·ã¥ïŒå€ãè¡ã衚瀺ãããŸãŸå°ããªãæŽæ°äžããã³ãã衚瀺
- ãã£ã«ã¿ïŒãã§ããäžã¯ç¡å¹ã«ãããã¬ã€ã¢ãŠãã¯åãããªã
- è¡ã¢ã¯ã·ã§ã³ïŒè¡åäœã®ä¿çç¶æ
- ãšã©ãŒïŒã¬ã€ã¢ãŠãã厩ããªãã€ã³ã©ã€ã³è¡šç€º
ã¬ã€ã¢ãŠãã·ãããé²ã
ããŒã«ããŒãç©ºç¶æ ãããŒãžããŒã·ã§ã³ã®ã¹ããŒã¹ã確ä¿ããŠãçµæãå€ãã£ããšãã«ã³ã³ãããŒã«ãåããªãããã«ããŸããããŒãã«é åã®åºå® min-height ãèšå®ããããããŒïŒãã£ã«ã¿ããŒãåžžã«ã¬ã³ããªã³ã°ããŠãããšããŒãžã®ãžã£ã³ããé¿ããããŸãã
å ·äœäŸïŒãã±ããç»é¢ã§ãOpenããããSolvedãã«åãæ¿ããŠããªã¹ããçã£çœã«ããªãã§ãã ãããçŸåšã®è¡ãæ®ããç¶æ ãã£ã«ã¿ãäžæçã«ç¡å¹åããæŽæ°ããããã±ããã®ãšããã ãä¿çç¶æ ã«ããŸãã
ã¹ããããã€ã¹ãããïŒååŸã ãã§é ããªã¹ããçŽã
é ãç»é¢ãäžã€éžã³ãå°ããªä¿®çãšèããŠåãçµãã§ãã ãããç®æšã¯å®ç§ã§ã¯ãªããã¹ã¯ããŒã«ãšå ¥åã§æç¢ºã«äœæã§ããæ¹åãåºãããšã§ãã
ç°¡åãªååŸãã©ã³
ãŸãçã¿ã®æ£äœãåä»ããŸããããŒãžãéããŠäžã€ã®ããšã詊ããŠãã ããïŒéãã¹ã¯ããŒã«ãããæ€çŽ¢ããã¯ã¹ã«æåãæã€ãããŒãžããã£ã«ã¿ã倿Žãããå€ãã®å Žåãæ¬åœã«å£ããŠããã®ã¯ãã®ãã¡ã®äžã€ã ãã§ããããæåã«çŽãã¹ããã€ã³ãã瀺ããŸãã
ãã®åŸãã·ã³ãã«ãªé åºã§äœæ¥ããŸãïŒ
- ããã«ããã¯ãç¹å®ïŒãžã£ã³ã¯ãªã¹ã¯ããŒã«ãé ãå ¥åãé ããããã¯ãŒã¯å¿çããŸãã¯æ··å
- DOM ãµã€ãºãåãïŒä»®æ³åããŸã㯠UI ãå®å®ãããŸã§ããã©ã«ãã®ããŒãžãµã€ãºãå°ãããã
- æ€çŽ¢ãèœã¡çãããïŒå ¥åããããŠã³ã¹ããå€ããªã¯ãšã¹ãããã£ã³ã»ã«ããŠçµæã®é åºãå®ã
- è¡ãå®å®ãããïŒäžè²«ããããŒããã³ãã¬ãŒãå ã§æ°ãããªããžã§ã¯ããäœããªããè¡ã¬ã³ããªã³ã°ãã¡ã¢åãã
- äœæé床ãäžããïŒè¡åäœã®ã¹ã±ã«ãã³ãå°ããªã€ã³ã©ã€ã³ã¹ãããŒã§ããŒãžå šäœããããã¯ããªã
åã¹ãããã®åŸã§ãæåã«éåæããã£ãã¢ã¯ã·ã§ã³ãåãã¹ãããŸããä»®æ³åã§ã¹ã¯ããŒã«ãæ»ããã«ãªãã°æ¬¡ãžãå ¥åããŸã é ããªããããŠã³ã¹ãšãªã¯ãšã¹ããã£ã³ã»ã«ã次ã®å€§ããªåã¡çã§ãã
ã³ããŒã§ããå°ããªäŸ
ãUsersãããŒãã«ã« 10,000 è¡ãããšããŸããã¹ã¯ããŒã«ãã«ã¯ã€ãã®ã¯ãã©ãŠã¶ãããŸãã«ãå€ãã®è¡ããã€ã³ãããŠããããã§ãã衚瀺ãããŠããè¡ã ãã¬ã³ããªã³ã°ããããã«ä»®æ³åããŸãã
æ¬¡ã«æ€çŽ¢ãé
ãæããåå ã¯æ¯ããŒã§ãªã¯ãšã¹ããé£ã¶ããšã§ãã250ã400 ms ã®ãããŠã³ã¹ã远å ããAbortControllerïŒãŸã㯠HTTP ã¯ã©ã€ã¢ã³ãã®ãã£ã³ã»ã«æ©èœïŒã§åã®ãªã¯ãšã¹ãããã£ã³ã»ã«ããŠãææ°ã®ã¯ãšãªã ãããªã¹ããæŽæ°ããããã«ããŸãã
æåŸã«åè¡ãå®äŸ¡ã«ä¿ã¡ãŸããprops ã¯ã·ã³ãã«ã«ïŒå¯èœãªéã id ãšããªããã£ãïŒãè¡ã®åºåãã¡ã¢åããŠé¢ä¿ãªãæŽæ°ã§åæç»ãããªãããã«ããå šç»é¢ãªãŒããŒã¬ã€ã§ã¯ãªãããŒãã«å ã«èªã¿èŸŒã¿ã衚瀺ããŠããŒãžã®å¿çæ§ãç¶æããŸãã
ãããã誀ã
ããŒã ã¯ãã°ãã°ããã€ãã®ä¿®æ£ãé©çšããŠå°ããªæ¹åãèŠãŠæºè¶³ãããã®åŸåæ»ããŸããçç±ã¯å€§æµãéãéšåãããªã¹ããã®ãã®ãã§ã¯ãªããåè¡ãã¬ã³ããªã³ã°ã»æŽæ°ã»ããŒã¿ååŸæã«ããä»äºã«ããããã§ãã
ä»®æ³åã¯å©ãã«ãªããŸãããç°¡åã«çžæ®ºãããŸããããå¯èŠè¡ããšã«éããã£ãŒããããŠã³ãããããç»åããã³ãŒããããããŠã©ããã£ãŒã倧éã«èµ°ãããããé«äŸ¡ãªãã©ãŒããããè¡ã£ãŠãããšã¹ã¯ããŒã«ã¯ãŸã ã€ãããªããŸããä»®æ³åã¯è¡šç€ºãããè¡æ°ãå¶éããã ãã§ãåè¡ãéãããšãé²ãããã§ã¯ãããŸããã
ããŒãéããªããã©ãŒãã³ã¹ãã©ãŒã§ããé åã€ã³ããã¯ã¹ãããŒã«äœ¿ããšãæ¿å ¥ã»åé€ã»ãœãŒãæã« Vue ã¯è¡ãæ£ãã远跡ã§ããŸããããããåããŠã³ãã匷å¶ããå ¥åãã©ãŒã«ã¹ããªã»ããããããšããããŸããå®å®ãã id ã䜿ã£ãŠ DOM ãšã³ã³ããŒãã³ãã€ã³ã¹ã¿ã³ã¹ãåå©çšããŠãã ããã
ãããŠã³ã¹ãããããããšè£ç®ã«åºãŸããé ããããšãŠãŒã¶ãŒã¯äœãèµ·ããªããšæããçµæãé£ãã§ãããŸã§åŸ ããããå°è±¡ã«ãªããŸããçãã®é å»¶ãå€ãã®å ŽåããŸãåããŸããããSearching...ãã®ãããªå³æãã£ãŒãããã¯ãåºãããšã§ã¢ããªãåãä»ããŠããããšã瀺ããŸãã
ããèŠãããäºã€ã®ãã¹ïŒ
- ãªã¹ããä»®æ³åããŠããå¯èŠè¡ã«éãã»ã«ïŒç»åããã£ãŒããè€éãªã³ã³ããŒãã³ãïŒã眮ãããŸãŸã«ãã
- ãœãŒããæŽæ°æã«é åã€ã³ããã¯ã¹ãããŒã«ããŠè¡ãåããŠã³ãããã
- ãããŠã³ã¹é å»¶ãé·ãã㊠UI ãé ãæãã
- å¹ åºããªã¢ã¯ãã£ã倿Žãããªã¯ãšã¹ããçºçãããïŒãã£ã«ã¿å šäœã deep watch ãããURL ç¶æ ãé »ç¹ã«åæããïŒ
- ã¹ã¯ããŒã«äœçœ®ãæ¶ãããã©ãŒã«ã¹ã奪ãã°ããŒãã«ãªããŒãžããŒããŒã䜿ã
ãã Vue 3 管ç UI ã®ããã©ãŒãã³ã¹ãã§ãã¯ãªã¹ãã䜿ããªãã"äœãåã¬ã³ããŒããã" ãš "äœãåååŸããã" ã第äžçŽã®åé¡ãšããŠæ±ã£ãŠãã ããã
ã¯ã€ãã¯ããã©ãŒãã³ã¹ãã§ãã¯ãªã¹ã
ããŒãã«ããªã¹ããããã€ãå§ãããšãã«äœ¿ã£ãŠãã ãããç®æšã¯æ»ãããªã¹ã¯ããŒã«ãäºæž¬å¯èœãªæ€çŽ¢ããããŠé©ãã®å°ãªãåã¬ã³ããªã³ã°ã§ãã
ã¬ã³ããªã³ã°ãšã¹ã¯ããŒã«
å€ãã®ãé ããªã¹ããåé¡ã¯ãã¬ã³ããªã³ã°ãããã»é »ç¹ããã«èµ·å ããŸãã
- ç»é¢ã«æ°çŸè¡ã衚瀺ã§ãããªãä»®æ³åã䜿ããDOM ã«ã¯ç»é¢äžã®èŠçŽ ã ãïŒå°ããªãããã¡å«ãïŒãå ¥ãã
- è¡é«ãã¯å®å®ããããå¯å€é«ãã¯ä»®æ³åãå£ããžã£ã³ã¯ãçã
- ã€ã³ã©ã€ã³ã§æ°ãããªããžã§ã¯ããé
åã props ã«æž¡ãã®ã¯é¿ããïŒäŸïŒ
:style="{...}"ïŒãäžåºŠäœã£ãŠåå©çšãã - è¡ããŒã¿ã«å¯Ÿãã deep watcher ã¯æ³šæã
computedãšç¹å®ãã£ãŒã«ãã«å¯Ÿããéå®ç㪠watch ãåªå ãã - é åã€ã³ããã¯ã¹ã§ã¯ãªããå®éã®ã¬ã³ãŒã id ã«åãå®å®ããããŒã䜿ã
æ€çŽ¢ãèªã¿èŸŒã¿ããªã¯ãšã¹ã
ãããã¯ãŒã¯ãé ããŠããªã¹ããéãæããããã«ãã
- æ€çŽ¢ã¯ 250ã400 ms ååŸã§ãããŠã³ã¹ããå ¥åã«ãã©ãŒã«ã¹ãä¿ã¡ãå€ããªã¯ãšã¹ãããã£ã³ã»ã«ããŠå€ãçµæãäžæžãããªãããã«ãã
- æ°ããçµæãèªã¿èŸŒãéã¯æ¢åã®çµæã衚瀺ãããŸãŸã«ããå°ããªãæŽæ°äžãç¶æ ã䜿ã
- ããŒãžããŒã·ã§ã³ã¯äºæž¬å¯èœã«ïŒåºå®ããŒãžãµã€ãºãæç¢ºãªæ¬¡ïŒåã®æåãé©ãã®ãªã»ãããªãïŒ
- é¢é£ããåŒã³åºãã¯ãŸãšããŠãããåŠçããã䞊åã«ãã§ãããããŸãšããŠã¬ã³ããªã³ã°ãã
- åããã£ã«ã¿ã»ããã®æåŸã®æåå¿çããã£ãã·ã¥ããŠãæ»ã£ããšãã«ãã衚瀺ã§ããããã«ãã
äŸïŒè² è·ã®ããããã±ããã£ã³ã°ç®¡çç»é¢
ãµããŒãããŒã ãäžæ¥äžéãããŸãŸã«ãããã±ããç»é¢ããããŸãã顧客åãã¿ã°ã泚æçªå·ã§æ€çŽ¢ãã€ã€ãã©ã€ããã£ãŒãããã±ããã¹ããŒã¿ã¹ãæŽæ°ããŸãïŒæ°ããè¿ä¿¡ãåªå åºŠå€æŽãSLA ã¿ã€ããŒïŒãããŒãã«ã¯ç°¡åã« 10,000 è¡ã«å°éããŸãã
æåã®ããŒãžã§ã³ã¯åäœããŸããäœæãã²ã©ããå ¥åããæåãé ããŠè¡šç€ºãããããŒãã«ã¯äžã«ãžã£ã³ãããŠã¹ã¯ããŒã«äœçœ®ããªã»ãããããã¢ããªã¯ããŒå ¥åããšã«ãªã¯ãšã¹ããéããŸããçµæãå€ããã®ãšæ°ãããã®ã®éã§ãã«ãã«ããŸãã
æ¹åããç¹ïŒ
- æ€çŽ¢å ¥åããããŠã³ã¹ïŒ250ã400 msïŒããŠãŠãŒã¶ãŒãæ¢ãŸã£ããšãã ãåãåãããããã«ãã
- æ°ãããªã¯ãšã¹ãäžãåã®çµæã衚瀺ããããªãã«ãŒãæ¢ãã
- è¡ãä»®æ³åã㊠DOM ã«è¡šç€ºãããè¡ã ããã¬ã³ããªã³ã°ãã
- ãã±ããè¡ãã¡ã¢åããŠç¡é¢ä¿ãªã©ã€ãæŽæ°ã§åã¬ã³ããŒãããªãããã«ãã
- éãã»ã«ã³ã³ãã³ãïŒã¢ãã¿ãŒããªããã¹ãããããããŒã«ãããïŒã¯è¡ãå¯èŠã«ãªã£ããšãã«é å»¶èªã¿èŸŒã¿ãã
ãããŠã³ã¹åŸãå ¥åé å»¶ã¯æ¶ããç¡é§ãªãªã¯ãšã¹ããæžã£ããåã®çµæãæ®ãããšã§ããªãã«ãŒãæ¢ãŸãããããã¯ãŒã¯ãé ããŠãç»é¢ã¯å®å®ããŠèŠããã
ä»®æ³åãæå€§ã®èŠèŠçåå©ã§ããã©ãŠã¶ã倧éã®è¡ãåæã«æ±ãå¿ èŠããªããªã£ãããã¹ã¯ããŒã«ãæ»ããã«ãªã£ããè¡ã®ã¡ã¢åã¯ãåäžãã±ããã®å€æŽã§ããŒãã«å šäœãæŽæ°ãããã®ãé²ãã ã
ããã«ãã©ã€ããã£ãŒãã®æŽæ°ãæ°çŸããªç§ããšã«ãããé©çšããããšã§ UI ã®åãããŒãæžãããã
çµæïŒã¹ã¯ããŒã«ãå®å®ããå ¥åãéããé©ããæžã£ãã
次ã®ã¹ãããïŒããã©ãŒãã³ã¹ãããã©ã«ãã«ãã
é«éãªç®¡ç UI ã¯åŸããæãããç¶æããæ¹ãç°¡åã§ããæ¬ãã§ãã¯ãªã¹ããæ°ããç»é¢ããšã®æšæºã«ããŠãã ããã倧ããªæ¹åã¯éåžžããã©ãŠã¶ãæç»ãããã®ãæžãããå ¥åã«å¯Ÿããåå¿ãéãããããšããçãŸããŸãã
åºæ¬ããå§ããŸãããïŒDOM ãµã€ãºãæžããïŒé·ããªã¹ããä»®æ³åãé衚瀺è¡ãã¬ã³ããªã³ã°ããªãïŒãå ¥åé å»¶ãæžããïŒæ€çŽ¢ããããŠã³ã¹ãéããã£ã«ã¿ãããŒå ¥åããšã«å®è¡ããªãïŒãã¬ã³ããªã³ã°ãå®å®ãããïŒè¡ã³ã³ããŒãã³ããã¡ã¢åãprops ãå®å®åïŒãå°ããªãªãã¡ã¯ã¿ã¯æåŸã«åããŠãã ããã
ãã®åŸãååž°ãé²ãããã®ã¬ãŒãã¬ãŒã«ãå°å ¥ããŸããäŸãã°ã200 è¡ãè¶ ãããªã¹ãã¯ä»®æ³åãæ€çŽ¢å ¥åã¯ãããŠã³ã¹ããã¹ãŠã®è¡ã¯å®å®ãã id ããŒã䜿ãããªã©ã
åå©çšå¯èœãªãã«ãã£ã³ã°ãããã¯ãããã°å®¹æã«ãªããŸããããã©ã«ãã®èšå®ãå ¥ã£ãä»®æ³ããŒãã«ã³ã³ããŒãã³ãããããŠã³ã¹æžã¿æ€çŽ¢ããŒãããŒãã«ã¬ã€ã¢ãŠãã«åã£ãã¹ã±ã«ãã³ïŒç©ºç¶æ ãçšæããã°ãWiki ããã广çã§ãã
å®çšçãªç¿æ £ãšããŠïŒæ°ãã管çç»é¢ãããŒãžããåã«ãããŒã¿ã10åã«ããŠé ãããã¯ãŒã¯ããªã»ããã§ãã¹ãããŠãã ãããããã§ãäœæãè¯ããã°å®éçšã§ãåªããäœéšã«ãªããŸãã
ããå éšããŒã«ãçŽ æ©ãæ§ç¯ãããããã®ãã¿ãŒã³ãç»é¢å šäœã§äžè²«ãããããªã AppMaster (appmaster.io) ã¯é©ããéžæè¢ã«ãªãåŸãŸããAppMaster ã¯å®éã® Vue 3 Web ã¢ããªãçæããããããªã¹ããéããªã£ããšããåããããã¡ã€ãªã³ã°ãšæé©åã®ã¢ãããŒããé©çšã§ããŸãã
ãããã質å
ã¬ã³ããªã³ã°ãæ°çŸè¡ãè¶ ãããªãããŸãã¯ä»®æ³åãå°å ¥ããŠãã ãããã¹ã¯ããŒã«äžã«ãã©ãŠã¶ãäœåãã® DOM ããŒããæ±ãå¿ èŠããªããªããããäœæã§æã倧ããªæ¹åãåŸãããããšãå€ãã§ãã
ã¹ã¯ããŒã«ã§ãã¬ãŒã ãèœã¡ããªãã¬ã³ããªã³ã°ïŒDOM ã®åé¡ã§ããããšãå€ãã§ããUI ã¯æ»ããã§ãçµæã®å°çãé ããªããããã¯ãŒã¯ããµãŒãåŽã®ãã£ã«ã¿ãªã³ã°ãåå ã§ãããã£ãã·ã¥æžã¿ããŒã¿ãé«éããŒã«ã«å¿çã§ç¢ºèªãããšå€å¥ã§ããŸãã
ä»®æ³åã¯ã衚瀺ãããŠããè¡ïŒãšå°ããªãããã¡ïŒã ããã¬ã³ããªã³ã°ããããŒã¿ã»ããå šäœã DOM ã«çœ®ããªããªãä»çµã¿ã§ããããã«ãã DOM ãµã€ãºãã¡ã¢ãªäœ¿çšãã¹ã¯ããŒã«æã®åŠçéãæžããŸãã
è¡é«ããäžè²«ããŠããããšãç®æããŠãã ãããã¬ã³ããªã³ã°åŸã«ãµã€ãºãå€ããã³ã³ãã³ãïŒè¡ãå±éãããç»åãèªã¿èŸŒãŸãããããã¹ããæãè¿ããããªã©ïŒããããšãã¹ã¯ããŒã©ãŒãåæž¬å®ãè¡ããžã£ã³ãããžã£ã³ã¯ãçºçããŸãã
管çç»é¢ã®æ€çŽ¢ã§ã¯ 250ã400 ms çšåºŠãè¯ãåºçºç¹ã§ããçããããšæ¯ããŒã§åãã£ã«ã¿ãèµ°ããé·ããããšå ¥åäœéšãé ãæããŸããããŒã¿ã«åãã°ç©ºçœããªã ã 2ã3 æåæªæºã®æ€çŽ¢ç¡èŠãæ€èšããŠãã ããã
åã®ãªã¯ãšã¹ãããã£ã³ã»ã«ãããå€ãã¬ã¹ãã³ã¹ãç¡èŠããŠãã ãããç®æšã¯åçŽã§ãææ°ã®ã¯ãšãªã ããããŒãã«ãæŽæ°ã§ããããã«ããããšã§ããAbortControllerïŒfetchïŒãã¯ã©ã€ã¢ã³ãã®ãã£ã³ã»ã«æ©èœã䜿ããŸãããã
å¿
èŠä»¥äžã«å€§ããªãªã¢ã¯ãã£ããªããžã§ã¯ããæž¡ãããããã³ãã¬ãŒãå
ã§æ°ããã€ã³ã©ã€ã³é¢æ°ããªããžã§ã¯ããäœæãããããããšãåå ã§ããããããã£ããã³ãã©ã®ã¢ã€ãã³ãã£ãã£ãå®å®ãããå€åããªãéšå㯠v-memo ã®ãããªã¡ã¢åã䜿ããŸãããã
ã¬ã³ããŒãã¹ããé«äŸ¡ãªåŠçãåãé€ããŠãã ããããã©ãŒãããæžã¿ã®å€ïŒæ¥æãé貚ïŒã¯äžåºŠã ãç®åºããŠãã£ãã·ã¥ããåºããŒã¿ãå€ãã£ããšãã«ã ãæŽæ°ããããã«ããŸããäŸãã°å€æ°ã®è¡ã§ new Date() ãæ¯ååŒã¶ã®ã¯é¿ããŸãããã
æŽæ°äžã§ãåã®çµæãç»é¢ã«æ®ããããŒãã«ãã¯ãªã¢ãã代ããã«å°ããª âæŽæ°äžâ 衚瀺ãåºããšè¯ãã§ããããã«ããããªãã«ãŒãã¬ã€ã¢ãŠããžã£ã³ããé²ããé ããããã¯ãŒã¯ã§ãç»é¢ãå®å®ããŠèŠããŸãã
ã¯ããAppMaster ã¯å®éã® Vue 3 Web ã¢ããªãçæãããããåãæé©åææ³ããã®ãŸãŸé©çšã§ããŸããã¬ã³ããªã³ã°ãããã¡ã€ã«ãä»®æ³åãæ€çŽ¢ã®ãããŠã³ã¹ãè¡ã®å®å®åã¯å šãŠæå¹ã§ãã


