çæããã UI ã«ã«ã¹ã¿ã Vue ã³ã³ããŒãã³ããå®å šã«åçæãšå ±åããã
çæããã UI ãå£ããã«ã«ã¹ã¿ã Vue ã³ã³ããŒãã³ãã远å ããæ¹æ³ãéé¢ãã¿ãŒã³ãå¢çã«ãŒã«ãç°¡åãªåãæž¡ãã§åçæã«åŒ·ãèšèšãåŠã³ãŸãã

çæããã UI ãçŽæ¥ç·šéãããšäœãå£ããã®ã
çæããã UI ã¯åçæãåæã«äœãããŠããŸããAppMaster ã®ãããªãã©ãããã©ãŒã ã§ã¯ãVue3 ã®ãŠã§ãã¢ããªã³ãŒããããžã¥ã¢ã«ãã«ããŒããçæãããŸããåçæã¯ç»é¢ãããžãã¯ãããŒã¿ã¢ãã«ã®æŽåæ§ãä¿ã€æ¹æ³ã§ãã
åé¡ã¯åçŽã§ãïŒçæããããã¡ã€ã«ãçŽæ¥ç·šéãããšã次ã®åçæã§ããªãã®å€æŽãäžæžããããå¯èœæ§ããããŸãã
ã ããããŒã ã¯ã«ã¹ã¿ã ã³ãŒãã䜿ããããªããŸããçµã¿èŸŒã¿ã® UI ãããã¯ã¯æšæºçãªãã©ãŒã ãããŒãã«ãã«ããŒããŸãããå®éã®ã¢ããªã§ã¯è€éãªãã£ãŒããå°å³ã®ããã«ãŒããªããããã¹ããšãã£ã¿ã眲åãããããã©ãã°ïŒããããã®ãã©ã³ããŒãšãã£ãç¹æ®ãªèŠçŽ ãå¿ èŠã«ãªãããšããããããŸãããããã¯ã«ã¹ã¿ã Vue ã³ã³ããŒãã³ãã远å ããè¯ãçç±ã§ãããéèŠãªã®ã¯ "æ¡åŒµ" ãšããŠæ±ããçŽæ¥ç·šéããªãããšã§ãã
ã«ã¹ã¿ã ã³ãŒããçæã³ãŒããšæ··ãããšãåé¡ã¯ããšã«ãªã£ãŠãããã«ããçŸããŸããæ¬¡ã® UI 倿Žã§åçæãèµ°ããŸã§æ°ã¥ããªããããããŸããããå¥ã®ããŒã ã¡ã³ããŒãããžã¥ã¢ã«ãšãã£ã¿ã§ç»é¢ã調æŽãããšãã«åããŠåé¡ã«ãªãããšããããŸããããããåé¡ã¯ïŒ
- ãã³ãã¬ãŒããåçæãããŠã«ã¹ã¿ã ã®ããŒã¯ã¢ãããæ¶ããã
- ãã¡ã€ã«åãæ§æã®å€æŽã§ import ãç»é²ãå£ããã
- ãã¡ãã£ãšããä¿®æ£ãããããã€ããšã«ããŒãžã³ã³ããªã¯ãã«ãªãã
- çæããžãã¯ãšã«ã¹ã¿ã ããžãã¯ãä¹é¢ããŠç«¯ã®ã±ãŒã¹ã§å€±æãå§ããã
- äœã眮ãæãããããããã¢ããã°ã¬ãŒããæããªãã
ç®çã¯ã«ã¹ã¿ãã€ãºãé¿ããããšã§ã¯ãªããåçæãäºæž¬å¯èœã«ããããšã§ããçæãããç»é¢ãšã«ã¹ã¿ã ãŠã£ãžã§ããã®éã«æç¢ºãªå¢çãä¿ãŠã°ãåçæã¯ã¹ãã¬ã¹ã§ã¯ãªãæ¥åžžäœæ¥ã«ãªããŸãã
åçæãå®å šã«ããå¢çã«ãŒã«
äœæ¥ã倱ããã«ã«ã¹ã¿ãã€ãºããã«ã¯ã次ã®ã«ãŒã«ã«åŸã£ãŠãã ããïŒçæããããã¡ã€ã«ãç·šéããªãããšããããã¯ã³ã³ãã€ã«æžã¿ã®ææç©ã®ããã«èªã¿åãå°çšãšæ±ããŸãã
UI ãäºã€ã®ãŸãŒã³ãšããŠèããŸãïŒ
- çæãŸãŒã³ïŒãžã§ãã¬ãŒã¿ã«ãã£ãŠäœãããããŒãžãã¬ã€ã¢ãŠããç»é¢ã
- ã«ã¹ã¿ã ãŸãŒã³ïŒããªããæã§æžã Vue ã³ã³ããŒãã³ãã眮ãå¥ã®ãã©ã«ãã
çæããã UI ãã«ã¹ã¿ã ã³ã³ããŒãã³ããå©çšããã¹ãã§ãã£ãŠãã³ã³ããŒãã³ãèªäœãããã«äœãã¹ãã§ã¯ãããŸããã
é·æçã«ããŸãããããã«ã¯ã"å¢ç" ãå°ããæç¢ºã«ä¿ã¡ãŸããã«ã¹ã¿ã ãŠã£ãžã§ããã¯å°ããªè£œåã®ããã«æ¯ãèããå¥çŽãæã€ã¹ãã§ãïŒ
- Props inïŒè¡šç€ºã«å¿ èŠãªãã®ã ãã
- Events outïŒããŒãžãåå¿ããããã«å¿ èŠãªãã®ã ãã
ãŠã£ãžã§ããå ããã°ããŒãã«ã¹ããŒããæäœããããé¢é£ã®ãªã API ãåŒã¶ããšã¯ãæç€ºçã«å¥çŽã®äžéšã§ãªãéãé¿ããŠãã ããã
AppMaster ã¹ã¿ã€ã«ã®çæããã Vue3 ç»é¢ã§ã¯ãå€ãã®å Žåãçæãããç»é¢åŽã§ã¯ props ãæž¡ãã€ãã³ããåãåãããã®æå°éã®é ç·ã ããè¡ããŸãããã®é ç·ã¯åçæã§å€ããããšããããŸãããå°ããç°¡åã«ããçŽããã¯ãã§ããæ¬åœã®äœæ¥ã¯ã«ã¹ã¿ã ãŸãŒã³ã«å®å šã«æ®ããŸãã
Vue3 ãšçžæ§ã®è¯ãéé¢ãã¿ãŒã³
ç®æšã¯åçŽã§ãïŒçæãã¡ã€ã«ã¯èªç±ã«çœ®ãæãããããŠã£ãžã§ããã®ã³ãŒãã¯è§Šãããªãããšã
å®éçãªæ¹æ³ã¯ãç¹æ³šãŠã£ãžã§ãããå°ããªå éšã¢ãžã¥ãŒã«ãšããŠãŸãšããããšã§ãïŒã³ã³ããŒãã³ããã¹ã¿ã€ã«ããã«ããŒãŠãŒãã£ãªãã£ãäžç®æã«çœ®ããŸããçæããã Vue3 ã¢ããªã§ã¯ãéåžžã«ã¹ã¿ã ã³ãŒãã¯çæããŒãžã®å€ã«çœ®ããäŸåãšããŠã€ã³ããŒããããŸãã
ã©ãããŒã³ã³ããŒãã³ããéåžžã«åœ¹ç«ã¡ãŸããã©ãããŒã¯çæã¢ããªãšäŒè©±ããããŒãžã®æ¢åããŒã¿åœ¢ç¶ãèªã¿åããæ£èŠåããŠãŠã£ãžã§ããã«ã¯ãªãŒã³ãª props ãæž¡ããŸããçæããŒã¿ã®åœ¢ãåŸã§å€ãã£ãŠãããã°ãã°ãŠã£ãžã§ãããæžãæãã代ããã«ã©ãããŒãæŽæ°ããã ãã§æžã¿ãŸãã
æå¹ãªãã¿ãŒã³ã¯ããã€ããããŸãïŒ
- ãŠã£ãžã§ããããã©ãã¯ããã¯ã¹ãšããŠæ±ãïŒprops inãevents outã
- API ã¬ã¹ãã³ã¹ãæ¥ä»ãID ããŠã£ãžã§ããåãã«ãããã³ã°ããããã«ã©ãããŒã䜿ãã
- åçæãããããŒãžãå¶çºçã«ãŠã£ãžã§ãããäžæžãããªããããã¹ã¿ã€ã«ã¯ã¹ã³ãŒãåããã
- 芪㮠DOM æ§é ãããŒãžåºæã®ã¯ã©ã¹åã«äŸåããªãã
ã¹ã¿ã€ãªã³ã°ã«ã€ããŠã¯ãã¹ã³ãŒãããã CSSïŒãŸã㯠CSS ModulesïŒã奜ã¿ãå ±æã¯ã©ã¹ã«ã¯åå空éãä»ããŠãã ããããŠã£ãžã§ãããã¢ããªã®ããŒãã«åãããå¿ èŠãããå Žåã¯ãããŒãžã¹ã¿ã€ã«ãã€ã³ããŒããã代ããã«è²ã»ééã»ãã©ã³ããµã€ãºãªã©ã®ããŒãããŒã¯ã³ã props ãšããŠæž¡ããŠãã ããã
ã¹ãããã¯å°ãããªãã·ã§ã³ã®ãã®ïŒäŸïŒç©ºç¶æ ã®ã¡ãã»ãŒãžïŒã®å Žåã¯å®å šã§ããã¹ããããã³ã¢ãªã¬ã€ã¢ãŠããæåãå¶åŸ¡ãå§ãããããŠã£ãžã§ãããåã³çæã¬ã€ã€ãŒã«è¿ã¥ããŠããŸããåçæã®åé¡ãèµ·ãããããªããŸãã
å®å®ããã³ã³ããŒãã³ãå¥çŽã®èšèšïŒprops ãš eventsïŒ
åçæãèŠã«ããªãæãå®å šãªæ¹æ³ã¯ãåãŠã£ãžã§ãããå®å®ããã€ã³ã¿ãŒãã§ãŒã¹ãšããŠæ±ãããšã§ããçæç»é¢ã¯å€ããåŸãŸããããªãã®ã³ã³ããŒãã³ãã¯å€ãããªãããã«ããŸãã
ãŸãå ¥åïŒpropsïŒããå§ããŸããå°æ°ã§äºæž¬å¯èœãæ€èšŒãããããã®ã«ããŸããåçŽãªããªããã£ããèªåã§ç®¡çãããã¬ãŒã³ãªãªããžã§ã¯ãã奜ã¿ãããã©ã«ããçšæããŠç»é¢ããŸã å€ãæž¡ããŠããªãå Žåã§ããŠã£ãžã§ãããé©åã«åãããã«ããŸããID ãæ¥ä»æååãåæå€ã®ããã«å£ãããããã®ã¯æ€èšŒããŠãã¯ã©ãã·ã¥ãããã«ç©ºç¶æ ã衚瀺ããããã«ããŸãã
åºåïŒeventsïŒã«ã€ããŠã¯ããŠã£ãžã§ãããã¢ããªå šäœã§äžè²«ããŠæããããããæšæºåããŸããä¿¡é Œã§ããã»ããã®äŸïŒ
update:modelValueïŒv-model çšïŒchangeïŒãŠãŒã¶ãŒã確å®ãã倿Žããã¹ãŠã®ããŒã¹ãããŒã¯ã§ã¯ãªãïŒerrorïŒã³ã³ããŒãã³ããåŠçãå®äºã§ããªããšãïŒreadyïŒéåæåŠçãå®äºããŠãŠã£ãžã§ããã䜿çšå¯èœã«ãªã£ããšãïŒ
éåæåŠçãé¢äžããå Žåããããå¥çŽã®äžéšã«ããŸããloading ã disabled ã®ãã㪠props ãå
¬éãããµãŒããŒåŽã®å€±æã«å¯ŸããŠã¯ errorMessage ãæ€èšããŸããã³ã³ããŒãã³ããèªåã§ããŒã¿ãååŸãããªãã芪ãåå¿ã§ããããã« error ãš ready ã emit ããŠãã ããïŒããŒã¹ãããã°ããã©ãŒã«ãã㯠UI ãªã©ïŒã
ã¢ã¯ã»ã·ããªãã£ã®æåŸ äºé
ã¢ã¯ã»ã·ããªãã£ãå¥çŽã«çµã¿èŸŒã¿ãŸããlabelïŒãŸã㯠ariaLabelïŒãããããåãåããããŒããŒãæäœãææžåããæäœåŸã®ãã©ãŒã«ã¹ãäºæž¬å¯èœã§ããããšãä¿ã¡ãŸãã
äŸãšããŠãããã·ã¥ããŒãäžã®ã¿ã€ã ã©ã€ã³ãŠã£ãžã§ããã¯ç¢å°ããŒã§é ç®éãç§»åã§ããEnter ã§è©³çްãéãããã€ã¢ãã°ãéãããéããã³ã³ãããŒã«ã«ãã©ãŒã«ã¹ãæ»ãããšãã£ãæ¯ãèãããµããŒãããã¹ãã§ããããã«ãããçæãããç»é¢éã§ãŠã£ãžã§ãããåå©çšãããããªããŸãã
æé ïŒçæãã¡ã€ã«ã«è§Šããã«ã«ã¹ã¿ã ãŠã£ãžã§ããã远å ãã
å°ããå§ããŸãïŒãŠãŒã¶ãŒãæ°ã«ããäžã€ã®ç»é¢ãäžã€ã®ãŠã£ãžã§ãããæåã®å€æŽãçãä¿ã€ãšãåçæãäœã«åœ±é¿ããããèŠãããããªããŸãã
-
çæé åã®å€ã«ã³ã³ããŒãã³ããäœãã ææãããã©ã«ãã«çœ®ãããœãŒã¹ç®¡çã«å ¥ããŸãïŒå€ãã¯
customãextensionsãã£ã¬ã¯ããªïŒã -
å ¬éé¢ãå°ããä¿ã€ã å¿ èŠãªããŒã¿ã®å°æ°ã® props ãšãããã€ãã®ã€ãã³ãã ããåãæž¡ããŸããããŒãžã®å šç¶æ ãæž¡ãã®ã¯é¿ããŠãã ããã
-
èãã©ãããŒã远å ããã ã©ãããŒã¯çæããŒãžããŒã¿ããŠã£ãžã§ããã®å¥çŽã«ç¿»èš³ãã圹å²ã§ãã
-
ãµããŒããããæ¡åŒµãã€ã³ããéããŠçµ±åããã çæãã¡ã€ã«ãç·šéããªããŠãåç §ã§ããæ¹æ³ã§ã©ãããŒãèªã¿èŸŒã¿ãŸãã
-
åçæããŠæ€èšŒããã ã«ã¹ã¿ã ãã©ã«ããã©ãããŒãã³ã³ããŒãã³ãã¯å€æŽãããã«ã³ã³ãã€ã«ã§ããã¯ãã§ãã
å¢çãå³å¯ã«ä¿ã¡ãŸãããŠã£ãžã§ããã¯è¡šç€ºãšã€ã³ã¿ã©ã¯ã·ã§ã³ã«éäžããã©ãããŒã¯ããŒã¿ããããã³ã°ããŠã¢ã¯ã·ã§ã³ã転éããŸããããžãã¹ã«ãŒã«ã¯ã¢ããªã®ããžãã¯å±€ïŒããã¯ãšã³ããå ±æããã»ã¹ïŒã«çœ®ãããŠã£ãžã§ããã«åã蟌ãŸãªãã§ãã ããã
ç°¡åãªãã§ãã¯ïŒä»ããåçæããã£ããšããŠãå¥ã®ããŒã ã¡ã³ããŒãã¢ããªãåæ§ç¯ããŠåãçµæãåŸããããïŒ æåç·šéãããçŽãå¿ èŠããªããªãããã®ãã¿ãŒã³ã¯å ç¢ã§ãã
UI ãä¿å®ããããããããã«ããžãã¯ãã©ãã«çœ®ãã
ã«ã¹ã¿ã ãŠã£ãžã§ããã¯èŠãç®ãšãŠãŒã¶ãŒå ¥åãžã®åå¿ãäž»ã«æ±ãã¹ãã§ãããŠã£ãžã§ããã«ããžãã¹ã«ãŒã«ãè©°ã蟌ã¿ããããšåå©çšããã¹ãã倿Žãé£ãããªããŸãã
è¯ãããã©ã«ãã¯ãããžãã¹ããžãã¯ã¯ããŒãžããã£ãŒãã£ãŒã¬ã€ã€ãŒã«çœ®ãããŠã£ãžã§ãã㯠"ãã " ã«ä¿ã€ããšã§ããããŒãžããŠã£ãžã§ããã«ã©ã®ããŒã¿ãæž¡ããããŠã£ãžã§ãããã€ãã³ããåºãããšãã«äœãããããæ±ºããŸãããŠã£ãžã§ããã¯æç»ãšãŠãŒã¶ãŒã®æå³ã®å ±åãè¡ããŸãã
ãŠã£ãžã§ããã«è¿ãããžãã¯ïŒãã©ãŒããããå°ããç¶æ ãã¯ã©ã€ã¢ã³ããµã€ãã®æ€èšŒïŒãå¿ èŠãªå Žåã¯ãå°ããªãµãŒãã¹å±€ã®è£ã«é ããŸããVue3 ã§ã¯ãããã¢ãžã¥ãŒã«ãcomposableããããã¯æç¢ºãª API ãæã€ã¹ãã¢ã«ãªããŸãããŠã£ãžã§ããã¯ãã® API ãã€ã³ããŒãããã©ã³ãã ãªã¢ããªå éšãçŽæ¥åç §ããªãããã«ããŸãã
å®çšçãªåå²äŸïŒ
- WidgetïŒã³ã³ããŒãã³ãïŒïŒUI ã¹ããŒããå
¥ååŠçãããžã¥ã¢ã«ã
selectãchangeãretryã®ãããªã€ãã³ãã emitã - Service/composableïŒããŒã¿æŽåœ¢ããã£ãã·ã¥ãAPI ãšã©ãŒããŠãŒã¶ãŒã¡ãã»ãŒãžã«ãããã³ã°ã
- Page/containerïŒããžãã¹ã«ãŒã«ãæš©éãã©ã®ããŒã¿ãããŒããããããã€ä¿åãããã
- çæã¢ããªéšåïŒè§Šããã«ãããŒã¿ãæž¡ãã€ãã³ããåãåãã
ãŠã£ãžã§ããå
ã§çŽæ¥ API ãåŒã¶ã®ã¯ããã®ãŠã£ãžã§ããã®å¥çŽããããæç€ºçã«å«ãå Žåã«éããŸããååŸããŠã£ãžã§ãããæ
åœãããªãããã®ããšãååãããã¥ã¡ã³ãã§æç¢ºã§ããã¹ãã§ãïŒäŸïŒCustomerSearchWidgetïŒãããã§ãªããã°ãitemsãloadingãerror ã props ãšããŠæž¡ããŠãã ããã
ãšã©ãŒã¡ãã»ãŒãžã¯ãŠãŒã¶ãŒåãã«äžè²«ãããŸããçã®ãµãŒããŒæèšã衚瀺ããã®ã§ã¯ãªãã"ããŒã¿ãèªã¿èŸŒããŸããã§ãããå詊è¡ããŠãã ããã" ã®ããã«ã¢ããªã§äœ¿ãå°æ°ã®ã¡ãã»ãŒãžã«ãããããå¯èœãªããªãã©ã€ã¢ã¯ã·ã§ã³ãå«ãã詳现ãªãšã©ãŒã¯ãŠã£ãžã§ããå€ã§ãã°ã«æ®ããŸãã
äŸïŒã«ã¹ã¿ã ã® ApprovalBadge ãŠã£ãžã§ãããè«æ±æžãæ¿èªå¯èœãã©ãããæ±ºããã¹ãã§ã¯ãããŸãããããŒãžã status ãš canApprove ãèšç®ãããããžã¯ approve ã emitãããŒãžãå®éã®ã«ãŒã«ãå®è¡ããŠããã¯ãšã³ããåŒã³ãæåããšã©ãŒç¶æ
ã UI ã«æ»ããŸãã
次ã®åçæã§çã¿ãçãäžè¬çãªãã¹
å€ãã®åé¡ã¯ Vue èªäœã®ããã§ã¯ãªããã«ã¹ã¿ã äœæ¥ããžã§ãã¬ãŒã¿ãææããå Žæã«æ··ãããã倿Žããããã詳现ã«äŸåãããããããšããçããŸãã
ãã°ãã°ç¹°ãè¿ããã倱æã¯ïŒ
- çæããã Vue ãã¡ã€ã«ãçŽæ¥ç·šéããŠå€æŽç¹ãå¿ããã
- åºãã»ã¬ã¯ã¿ãã°ããŒãã« CSS ã䜿ããããŒã¯ã¢ãããå€ãã£ããšãã«ä»ã®ç»é¢ã«åœ±é¿ãäžããã
- çæãããç¶æ ãªããžã§ã¯ããçŽæ¥èªã¿æžãããŠãååãå€ãããšãŠã£ãžã§ãããå£ããã
- ã³ã³ããŒãã³ãã«ããŒãžåºæã®ä»®å®ãè©°ã蟌ã¿ãããã
- ã³ã³ããŒãã³ã APIïŒprops/eventsïŒããã€ã°ã¬ãŒã·ã§ã³èšç»ãªãã«å€æŽããã
ããããã·ããªãªïŒã«ã¹ã¿ã ã®ããŒãã«ãŠã£ãžã§ããã远å ããŠåããããããäžã¶æåŸãçæãããã¬ã€ã¢ãŠãã®å€æŽã§ã°ããŒãã«ãª .btn ã«ãŒã«ããã°ã€ã³ã管çããŒãžã«åœ±é¿ãäžããããããŒã¿ãªããžã§ã¯ãã user.name ãã user.profile.name ã«å€ãã£ãŠãŠã£ãžã§ãããéãã«å€±æããããããåé¡ã¯ãŠã£ãžã§ããã§ã¯ãªããäžå®å®ãªè©³çްãžã®äŸåã§ãã
ãããé²ãç¿æ £ã¯äºã€ãããŸãïŒ
第äžã«ãçæã³ãŒããèªã¿åãå°çšãšæ±ããã«ã¹ã¿ã ãã¡ã€ã«ã¯åããŠæç¢ºãªã€ã³ããŒãå¢çãä¿ã€ããšã
第äºã«ãã³ã³ããŒãã³ãå¥çŽãå°ããæç¢ºã«ä¿ã€ããšãé²åãå¿
èŠãªããapiVersion ã®ãããªç°¡åãªããŒãžã§ã³ prop ã远å ããããç§»è¡æéäžã¯å€ãåœ¢ãšæ°ãã圢ã®äž¡æ¹ããµããŒãããŸãã
ã«ã¹ã¿ã ã³ã³ããŒãã³ããåºè·ããåã®ã¯ã€ãã¯ãã§ãã¯ãªã¹ã
ã«ã¹ã¿ã ãŠã£ãžã§ãããçæããã Vue3 ã¢ããªã«ããŒãžããåã«ãç°¡åãªçŸå®ãã§ãã¯ãè¡ããŸããæ¬¡ã®åçæãé£ãªãçãæ®ããå¥ã®äººãåå©çšã§ããããšãç®æšã§ãã
- åçæãã¹ãïŒ å šé¢åçæãšãã«ããå®è¡ãçæãã¡ã€ã«ãåç·šéããå¿ èŠãããã°å¢çãééã£ãŠããŸãã
- æç¢ºãªå ¥åºåïŒ props inãemits outãå€éš DOM ã«è§Šã£ããç¹å®ã®ããŒãžã¹ãã¢ãåæã«ããã®ã¯é¿ããã
- ã¹ã¿ã€ã«ã®å
å«ïŒ ã¹ã¿ã€ã«ãã¹ã³ãŒãåããæç¢ºãªã¯ã©ã¹æ¥é èŸïŒäŸ:
timeline-ïŒã䜿ãã - å šç¶æ ã®è¡šç€ºïŒ loadingãerrorãempty ã®åç¶æ ã劥åœã§ããããšã確èªããã
- è€è£œããã«åå©çšïŒ å¥ããŒãžã«é 眮ã㊠props ãšã€ãã³ãåŠçãå€ããã ãã§åäœããã確èªããã
æ€èšŒã®ç°¡åãªæ¹æ³ïŒç®¡çç»é¢ã«ãŠã£ãžã§ããã远å ããæ¬¡ã«ã«ã¹ã¿ããŒããŒã¿ã«ããŒãžã«è¿œå ããŠãã©ã¡ãã props ãšã€ãã³ãåŠçã ãã§åãã詊ããŸããåããªãå®å šã§ãã
çŸå®çãªäŸïŒããã·ã¥ããŒãã«ã¿ã€ã ã©ã€ã³ãŠã£ãžã§ããã远å ãã
ãµããŒãããŒã ã¯ãã°ãã°ãã±ããã®å±¥æŽïŒã¹ããŒã¿ã¹å€æŽãå éšã¡ã¢ã顧客ã®è¿ä¿¡ãæ¯æããé éã®ã€ãã³ãïŒãäžã€ã®ç»é¢ã§èŠãããšèããŸããã¿ã€ã ã©ã€ã³ãŠã£ãžã§ããã¯é©ããŠããŸãããçæãã¡ã€ã«ãç·šéããŠæ¬¡ã®åçæã§äœæ¥ã倱ãããã¯ãããŸããã
å®å šãªã¢ãããŒãã¯ãŠã£ãžã§ãããçæ UI ã®å€ã«å€ç«ãããèãã©ãããŒãéããŠããŒãžã«å·®ã蟌ãããšã§ãã
ãŠã£ãžã§ããã®å¥çŽ
ã·ã³ãã«ã§äºæž¬å¯èœã«ããŸããäŸãã°ã©ãããŒãæž¡ããã®ïŒ
ticketIdïŒæååïŒrangeïŒéå»7æ¥ãéå»30æ¥ãã«ã¹ã¿ã ïŒmodeïŒcompact ã detailedïŒ
ãŠã£ãžã§ããã emit ãããã®ïŒ
selectïŒãŠãŒã¶ãŒãã€ãã³ããã¯ãªãã¯ãããšãïŒchangeFiltersïŒãŠãŒã¶ãŒãç¯å²ãã¢ãŒãã倿ŽãããšãïŒ
ãŠã£ãžã§ããã¯ããã·ã¥ããŒãããŒãžãããŒã¿ã¢ãã«ããªã¯ãšã¹ãã®æ¹æ³ã«ã€ããŠã¯äœãç¥ãããã¿ã€ã ã©ã€ã³ãæç»ããŠãŠãŒã¶ãŒã®æäœãå ±åããŸãã
ã©ãããŒãããŒãžãšã©ãã€ãªãã
ã©ãããŒã¯ããã·ã¥ããŒãã®é£ã«çœ®ãããããŒãžããŒã¿ãå¥çŽã«å€æããŸããããŒãžç¶æ
ããçŸåšã®ãã±ãã ID ãèªã¿åããUI ãã£ã«ã¿ã range ã«å€æããããã¯ãšã³ãã®ã¬ã³ãŒãããŠã£ãžã§ãããæåŸ
ããã€ãã³ã圢åŒã«ãããããŸãã
ãŠã£ãžã§ããã select ã emit ããããã©ãããŒã¯è©³çްããã«ãéããããŒãžã¢ã¯ã·ã§ã³ãããªã¬ãŒããŸããchangeFilters ãåãããã©ãããŒã¯ããŒãžã®ãã£ã«ã¿ãæŽæ°ããŠããŒã¿ãåååŸããŸãã
ããã·ã¥ããŒã UI ãåçæãããŠãããŠã£ãžã§ããã¯çæãã¡ã€ã«ã®å€ã«ããããç¡å·ã§æ®ããŸããéåžžãããŒãžããã£ãŒã«ãåãå€ããããã£ã«ã¿ã®ä¿åæ¹æ³ãå€ããããããšãã ãã©ãããŒãèŠçŽãã°æžã¿ãŸãã
ãµããŒããšãªãªãŒã¹ã®ç¿æ £ã§é©ããé²ã
ã«ã¹ã¿ã ã³ã³ããŒãã³ãã®å€±æã¯éå±ãªåå ã倧åïŒprop 圢ç¶ã®å€æŽãã€ãã³ããé£ã°ãªããçæããŒãžã®åã¬ã³ããªã³ã°ã§æåŸ ããå€ãåæç»ãããããªã©ã§ããããã€ãã®ç¿æ £ãããããæ©æã«æ€åºããŸãã
ããŒã«ã«ãã¹ãïŒå¢çã®å£ããæ©ãã«èŠã€ãã
çæ UI ãšãŠã£ãžã§ããã®å¢çã API ãšããŠæ±ãããŸããŠã£ãžã§ããã ããããŒãã³ãŒãããã props ã§ã¬ã³ããªã³ã°ããŠãã¹ãããŸãã
ããããŒãã¹ã® props ãšæ¬ æå€ã§ã¬ã³ããªã³ã°ããä¿åã»ãã£ã³ã»ã«ã»éžæãšãã£ãäž»èŠã€ãã³ããã·ãã¥ã¬ãŒãããŠèŠªãæ£ããåŠçããã確èªããŸããé ãããŒã¿ãå°ããç»é¢ã§ã詊ããå¥çŽä»¥å€ã§ã°ããŒãã«ã¹ããŒãã«æžã蟌ãŸãªãããšã確èªããŸãã
AppMaster ããŒã¹ã® Vue3 ã¢ããªã§éçºããå Žåãäœããåçæããåã«ãããã®ãã§ãã¯ãå®è¡ãããšåå 远跡ã容æã«ãªããŸãã
åçæåŸã®ååž°ïŒãŸãå確èªããããš
åçæããšã«ãã¿ãããã€ã³ããåãã§ãã¯ããŸãïŒåã props ãæž¡ãããåãã€ãã³ããåŠçãããŠãããïŒ ãããå£ãã®æåã®çŸãæ¹ã§ãã
èªã¿èŸŒã¿ãäºæž¬å¯èœã«ä¿ã¡ãŸãããã¡ã€ã«ãã¹ã«äŸåããèã import ãé¿ããã«ã¹ã¿ã ã³ã³ããŒãã³ãçšã®å®å®ãããšã³ããªãŒãã€ã³ããäžã€çšæããŸãã
æ¬çªã§ã¯ãŠã£ãžã§ããå ã«è»œéãã°ãšãšã©ãŒãã£ããã£ãå ¥ããŠãããšè¿ éã«åå ãç¹å®ã§ããŸãïŒ
- ããŠã³ãæã«äž»èŠãª propsïŒãµãã¿ã€ãºæžïŒããã°ããã
- å¥çŽéåïŒå¿ é prop ã®æ¬ èœãåã®äžäžèŽïŒãæ€åºããã
- API åŒã³åºã倱æã«çããšã©ãŒã³ãŒããæ·»ããã
- äºæããªãç©ºç¶æ ãèšé²ããã
å£ãããšãã¯ãåçæã§å ¥åãå€ãã£ãã®ãããŠã£ãžã§ããèªäœãå€ãã£ãã®ãããçŽ æ©ãçããããããšãéèŠã§ãã
ãã¿ãŒã³ãã¢ããªå šäœã§ç¹°ãè¿ããããã«ããæ¬¡ã®ã¹ããã
æåã®ãŠã£ãžã§ãããåããããæ¬¡ã«éèŠãªã®ã¯ãããç¹°ãè¿ã䜿ããããã«ããããšã§ãã
ãŠã£ãžã§ããå¥çŽã®ç°¡åãªç€Ÿå æšæºãäœããããŒã ã®ããŒãã«æžããŠãããŸããååä»ããå¿ é ïŒä»»æã® propsãå°ããªã€ãã³ãã»ããããšã©ãŒæåãæææš©ïŒäœãçæ UI ã«ããäœãã«ã¹ã¿ã ãã©ã«ãã«ãããïŒãç°¡æœã«ãŸãšããŸãã
å¢çã«ãŒã«ãå¹³æã«æžããŠãããŸãïŒçæãã¡ã€ã«ãç·šéããªããã«ã¹ã¿ã ã³ãŒãã¯éé¢ãããããŒã¿ã¯ props ãš events ãéããŠã ãæž¡ããããããã°ãã¡ãã£ãšçŽããŠçµããããæä¹ çãªä¿å®ã³ã¹ãã«ãªãã®ãé²ããŸãã
2ã€ç®ã®ãŠã£ãžã§ãããäœãåã«å°ããªåçæè©Šéšãå®è¡ããŠãã ãããæåã®ãŠã£ãžã§ãããåºè·ãããã®åŸå°ãªããšãäºåïŒã©ãã«å€æŽãã¬ã€ã¢ãŠã倿Žãæ°ãããã£ãŒã«ããªã©ïŒã®éåžžã®å€æŽã§åçæã詊ããäœãå£ããªãããšã確èªããŸãã
AppMaster ã䜿ãå Žåãå€ãã® UI ãšããžãã¯ã¯ããžã¥ã¢ã«ãšãã£ã¿ïŒUI ãã«ããŒãBusiness Process EditorãData DesignerïŒã§ç®¡çããã«ã¹ã¿ã Vue ã³ã³ããŒãã³ãã¯ãã«ããŒã衚çŸã§ããªãæ¬åœã«ç¹å¥ãªãŠã£ãžã§ããïŒã¿ã€ã ã©ã€ã³ãç¹æ®ãªãã£ãŒããç¬ç¹ã®å ¥åã³ã³ãããŒã«ãªã©ïŒã«éå®ããã®ãããŸãããããšãå€ãã§ããã¯ãªãŒã³ãªåºçºç¹ã欲ãããªããAppMaster on appmaster.io ã¯åçæãåæã«èšèšãããŠãããããã«ã¹ã¿ã ãŠã£ãžã§ãããéé¢ããŠäœ¿ãã¯ãŒã¯ãããŒãèªç¶ã«éŠŽæã¿ãŸãã
ãããã質å
çæããã Vue ãã¡ã€ã«ãçŽæ¥ç·šéãããšãåçææã«ããããäžæžããããå¯èœæ§ããããããUI ã®å€æŽãæ¶ããããšããããŸãããã«ããŒã§ã®å°ããªèŠèŠå€æŽããã³ãã¬ãŒããåäœæããæäœæ¥ã®ä¿®æ£ãæ¶ããŠããŸãããšããããããŸãã
ææžãã® Vue ã³ãŒãã¯å¥ãã©ã«ãïŒããšãã° custom ã extensionsïŒã«çœ®ããäŸåãšããŠèªã¿èŸŒãããã«ããŸããçæãããããŒãžã¯èªã¿åãå°çšãšããŠæ±ããã³ã³ããŒãã³ããšã¯å°ããå®å®ããã€ã³ã¿ãŒãã§ãŒã¹ã§ã€ãªããŸãã
ã©ãããŒã¯çæããŒãžãšãŠã£ãžã§ããã®éã«å ¥ãèãã³ã³ããŒãã³ãã§ãããŒãžã®ããŒã¿åœ¢ç¶ãã¯ãªãŒã³ãª props ã«å€æãããŠã£ãžã§ããã®ã€ãã³ããããŒãžã¢ã¯ã·ã§ã³ã«å€æããŸããããã«ãããåŸã§çæããŒã¿ãå€ãã£ãŠãã©ãããŒã ããæŽæ°ããã°æžãããšãå€ãã§ãã
å¥çŽã¯å°ããä¿ã¡ãŸãïŒãŠã£ãžã§ãããå¿ èŠãšããããŒã¿ã®å°æ°ã® props ãšããŠãŒã¶ãŒã®æå³ãäŒããæ°åã®ã€ãã³ããåçŽãªå€ãå¶åŸ¡ãããã¬ãŒã³ãªãªããžã§ã¯ãã䜿ããããã©ã«ããèšããŠå ¥åãæ€èšŒããã¯ã©ãã·ã¥ãããã«ç©ºç¶æ ã§å€±æãããããã«ããŸãã
update:modelValue ã¯ãã©ãŒã ã³ã³ãããŒã«ã®ããã« v-model ããµããŒããããå Žåã«äœ¿ããŸããchange ã¯ãŠãŒã¶ãŒã確å®ããæäœïŒä¿åãéžæå®äºãªã©ïŒã«äœ¿ãã®ãé©åã§ã芪ãåããŒå
¥åãåŠçããªãããã«ã§ããŸãã
ã¹ã¿ã€ã«ã¯ã¹ã³ãŒãåããæç¢ºãªã¯ã©ã¹ãã¬ãã£ãã¯ã¹ïŒäŸ: timeline-ïŒã䜿ã£ãŠãçæããŒãžã®å€æŽã§æå³ããªã圱é¿ãåºãªãããã«ããŸããã¢ããªã®ããŒããå¿
èŠãªããããŒãžã®ã¹ã¿ã€ã«ãã€ã³ããŒãããã®ã§ã¯ãªããè²ãééããã©ã³ããµã€ãºãšãã£ãããŒãããŒã¯ã³ã props ãšããŠæž¡ããŠãã ããã
ååãšããŠãŠã£ãžã§ããã¯ããžãã¹ã«ãŒã«ãæããªãã»ããåå©çšæ§ãé«ããªããŸããæš©éãæ€èšŒãä¿åã®å€æã¯ããŒãžãããã¯ãšã³ãã«ä»»ãããŠã£ãžã§ããã¯è¡šç€ºãšæäœã«éäžã㊠select ã retryãapprove ãšãã£ãã€ãã³ããåºãã ãã«ããŸãã
çæããããã¡ã€ã«ãã¹ã芪 DOM æ§é ãå
éšç¶æ
ãªããžã§ã¯ãã®åœ¢ç¶ãšãã£ãäžå®å®ãªè©³çްã«äŸåãããšå£ãããããªããŸããå¿
èŠãªããããã¯ã©ãããŒã§é èœããåå倿ŽïŒäŸ: user.name â user.profile.nameïŒããã£ãŠããŠã£ãžã§ãããæžãçŽãå¿
èŠããªãããã«ããŸãã
ãŠã£ãžã§ãããåå¥ã«ãå¥çŽã«åã£ãããŒãã³ãŒãã£ã³ã°ããã props ã§ã¬ã³ããªã³ã°ããŠãã¹ãããŸããæ¬ æå€ãç°åžžå€ãé å»¶ããŒã¿ãå°ããç»é¢ã§ã®è¡šç€ºã確èªããã°ããŒãã«ç¶æ ãæžãæããªãããšã確ãããŸããåçæåã«ããããããšåå ç¹å®ããã£ãšæ¥œã§ãã
ãã«ããŒã§è¡šçŸãã«ããèŠä»¶ïŒè€éãªãã£ãŒãããããããã«ãŒã眲åãããããã©ãã°ïŒãããããã©ã³ããŒãªã©ïŒã«å¯ŸããŠã¯ã«ã¹ã¿ã ãŠã£ãžã§ãããæ€èšãã䟡å€ããããŸããèŠèŠãšãã£ã¿ã§è¡šçŸã§ãããã®ã§ããã°ãé·æçãªä¿å®æ§ã®ããã«ãã¡ããåªå ããŸãã


