ReactãšVueã®æ¯èŒã«é¢ãã
è³æãå
¬ââéãããã ããã¯å®çšçãªäŸã§ããããããã®ãã¬ãŒã ã¯ãŒã¯ã®é¡äŒŒç¹ãšçžéç¹ãããªã詳现ã«èŠãããšãã§ããŸããã 仿¥ãèè
ã®John HannahãReactãšVueãå€§èŠæš¡ã«èª¿æ»ããŠããèšäºã®ç¿»èš³ãå
±æããããšæããŸãã 圌ã¯ã仿¥ã®ãŠã§ãéçºã®äžçã§ã¯ããŸãReactã®åªäœæ§ã次ã«Vueã®äººæ°ã®ççºçãªæé·ãèŠãããšãã§ãããšèšããŸãã æ¢åã®åŸåãç¶ãå Žåã2018幎æ«ãŸã§ã«ãVueã¯Angularããã€ãã¹ããæã䜿çšãããŠããWebããŒã«ã®ã©ã³ãã³ã°ã§2äœã«ãªãå¯èœæ§ãéåžžã«é«ããªããŸãã

ãžã§ã³ã«ãããšãéå»3幎éã圌ã¯Reactã§åæ¥éçºã«æºãã£ãŠããŸãã 圌ã¯ãã¯ã©ã€ã¢ã³ããä»äºãããŠããäŒç€Ÿã«æ¥ããšãã»ãšãã©ã®å ŽåãReactã䜿çšããŠãããžã§ã¯ããäœæããããšèšããŸãã ãã ãããã°ãããããšãVueã¯åæ§ã®æ³šæã¬ãã«ã䜿çšããããã«ãªããŸãã ãã®èšäºã§ã¯ã2ã€ã®ã©ã€ãã©ãªãŒã®éããããããçè§£ããããã«ãReactãšVueãåæããŸããïŒ ãã®èšäºã®å
容ã¯ãã¯ã©ã€ã¢ã³ããšã®å
±åäœæ¥ã«åœ¹ç«ã€ãšè¿°ã¹ãŠããŸãã 圌ã¯ãReactã§æ°å¹ŽåããŠããŸããããèªåããã£ãŠããããšãæ°ã«å
¥ã£ãŠããã«ãããããããVueã§äœæ¥ããŠãããšãã«çµéšã圹ã«ç«ããªãäºæããªãç¶æ³ãçºçããå¯èœæ§ããããããå°æ¥ã®æºåãããŸããããšèããŠããŸãã
æåŸããéå§
å¥åŠãªããšã«ãçµè«ãåºããŠãReactãšVueã«é¢ããç§ã®è©±ãå§ããããšæããŸãã ããã2ã€ã®ãã¬ãŒã ã¯ãŒã¯ã¯äŒŒãŠããŸãããããã€ãã®éèŠãªéãããããŸãããç°¡åã«èª¬æããŸãã ãªãããããæ¯èŒããã®ã§ããïŒ 1ã€ã®çç±ã¯ãVueéçºè
ã®
Evan Yuã«ãšã£ãŠãReactãã€ã³ã¹ãã¬ãŒã·ã§ã³ã®æºã®1ã€ã ã£ãããã§ãã ãããã®ãã¬ãŒã ã¯ãŒã¯ã¯ãAngularãEmberã«é¡äŒŒããŠãããšããããããäºãã«ã¯ããã«é¡äŒŒããŠããŸãã Vueã®ããã¥ã¡ã³ãããã仿¥è©±ããŠãããã¬ãŒã ã¯ãŒã¯ã®äž¡æ¹ã«æ¬¡ã®æ©èœãããããšãããããŸãã
- ä»®æ³DOMã䜿çšããŸãã
- åå¿æ§ããã³ã³ã³ããŒãã³ãæ§é ã
- äž»ãªã©ã€ãã©ãªã«çŠç¹ãåœãŠãããŠããŸãã ã«ãŒãã£ã³ã°ãã¢ããªã±ãŒã·ã§ã³ã®ã°ããŒãã«ç¶æ
ã®ç®¡çãªã©ã®è¿œå ã¿ã¹ã¯ã¯ãè£å©ããŒã«ã«ãã£ãŠè§£æ±ºãããŸãã
ãããã®ã©ã€ãã©ãªã«åºã¥ããŠæ§ç¯ãããæ¢æã®ãããžã§ã¯ããæ€èšããå ŽåãVueã«åºã¥ããŠæ§ç¯ããããããžã§ã¯ããšReactã«åºã¥ããŠæ§ç¯ããããããžã§ã¯ãã®éã«ã¯ãé倧ãªéããèŠããããšã¯æããŸããã ã€ãŸããReactãšVueã¯ããã©ãŒãã³ã¹ã®ç¹ã§äŒŒãŠãããäž¡æ¹ã®ãã¬ãŒã ã¯ãŒã¯ã¯ããŸããŸãªèŠæš¡ã®ãããžã§ã¯ãã®äœæã«é©ããŠããŸãã
ããšãã°ãåŸæ¥ã®Webããã€ã¹ãã¢ãã€ã«ããã€ã¹ãªã©ãããŸããŸãªãã©ãããã©ãŒã åãã«èšèšãããã¢ããªã±ãŒã·ã§ã³ãéçºããŠããå ŽåãReactã«ã¯çŽ æŽãããReact Nativeã®å©ç¹ããããŸãã ç§ã®ååã¯ãŸããReactã䜿çšããŠçµã¿èŸŒã¿TVã¢ããªã±ãŒã·ã§ã³ãäœæããŸããã ããã¯ãReactã䜿çšã§ãããšããŸããã¯ãªãã©ãããã©ãŒã ã®è峿·±ãäŸã§ãã ãã ããVueã«ã¯
Weexã®ãããã§ã¢ãã€ã«ãã©ãããã©ãŒã çšã®ã¢ããªã±ãŒã·ã§ã³ãéçºããæ©èœãããããããã®ç¹å®ã®ãã¬ãŒã ã¯ãŒã¯ãã¢ãã€ã«ãããžã§ã¯ãã«é©ããŠããå¯èœæ§ã¯
ååã«ãããŸãã
Reactãšã³ã·ã¹ãã ã¯Vueã®ãšã³ã·ã¹ãã ãããã¯ããã«å€§ãããéçºã®æåãšé床ã«å€§ããè²¢ç®ããå¯èœæ§ãããããšã«æ³šæããŠãã ããã Reactã¢ããªã±ãŒã·ã§ã³ãå®è¡ããããã«ããã€ãã®éèŠãªæ©èœãå¿
èŠãªå Žåãåæ§ã®æ©èœãæ¢ã«å®è£
ãããŠããå¯èœæ§ããããŸãã å®éãReactåéã®å€ãã®åé¡ã«ã€ããŠãããã€ãã®è§£æ±ºçãèŠã€ããå¯èœæ§ãéåžžã«é«ãã§ãã
ç§ã®äŒç€Ÿãä»äºãããã¯ã©ã€ã¢ã³ãã®ã¿ã€ãã«é¢ãããã1ã€ã®éèŠãªèæ
®äºé
ã¯ããããã®ã¯ã©ã€ã¢ã³ããäŸåããã©ã€ãã©ãªãŸãã¯ãã¬ãŒã ã¯ãŒã¯ã«ç²ŸéããŠããéçºè
ãèŠã€ããèœåã§ãã ããã§ã¯ãReactã«ãå©ç¹ããããŸãããããããäžæçãªãã®ã ãšæããŸãã
ãã®ä»ã®éãã¯ãäž»ã«éçºã®è€éããšæè¡çãªè©³çްã«é¢é£ããŠããŸãã ããšãã°ãç¹å®ã®æ©èœãããã€ãã®åŠ¥åã«ãã£ãŠç¹åŸŽä»ããããããã°ã©ãã³ã°ãã©ãã€ã ã«é¢é£ãããããã®ãããã«ãããŠãæç¢ºãªé·æãšçæãåºå¥ã§ããŸããã ããã«ã€ããŠããã«èª¬æããŸãã
ãã®çµæãæ¢ã«Reactã«ç²ŸéããŠããããŒã ãããå ŽåãVueã«åãæ¿ããŠãç¹å¥ãªå©ç¹ã¯åŸãããªããšèšããŸãïŒä»¥äžã®æ¬ ç¹ã«ã€ããŠèª¬æããŸãïŒã ããŒã ãããã³ããšã³ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºãå§ããã°ããã®å ŽåããŸãã¯BackboneãAngularJSãªã©ã®ãã¬ãŒã ã¯ãŒã¯ããæ°ãããã®ã«åãæ¿ããããšãæ€èšããŠããå Žåã¯ãåè¿°ã®Reactã®åŒ·ã¿ã¯æ¶ããŸããããVueãæ€èšããå¿
èŠããããŸãã å床ãä»ã®èŠå ã¯æè¡çãªè©³çްã«é¢é£ããŸããããã«ã€ããŠã¯ä»ãã説æããŸãã
ReactãšVueã®éã
ããããäœããããReactãšVueãæ¯èŒããŠã
Vueããã¥ã¡ã³ã ïŒéåžžã«é«å質ïŒãåç
§ããŠãã ãã
ãVueããã¥ã¡ã³ãã§ã¯ããããã®
é¡äŒŒç¹ãšçžéç¹ãéåžžã«ããé瀺ãããŠããŸãã ãã®ããã¥ã¡ã³ãã¯ãReactããŒã ã®ã¡ã³ããŒã§ãããã³ã»ã¢ãã©ã¢ããšãšãã«ãŠã¢ã³ã»ãŠãŒã«ãã£ãŠæžããããããç¹ã«åœ¹ç«ã¡ãŸãã ããã«ãç§ãåã£ãŠããå Žåãããã¥ã¡ã³ãããã®æç²ã¯ãç¶æ³ãå·éã«èŠãã®ã«åœ¹ç«ã¡ãŸãã
âããã©ãŒãã³ã¹
ããã©ãŒãã³ã¹ã«é¢ããŠã¯ãVueãšReactã¯éåžžã«äŒŒãŠããŸãã Vueã®ããã¥ã¡ã³ãã«ãããšãã»ãšãã©ã®å ŽåãVueã«ã¯ããããªå©ç¹ããããŸããã
æè¿ã®ãã³ãããŒã¯ã§ã¯ãReact 16ã¯Vue 2.5ãããé«éã§ããããšã瀺ãããŠããŸãã ããã©ãŒãã³ã¹ãæé©åãããšãã«ããã¬ãŒã ã¯ãŒã¯ã®æäœã«ããã€ãã®éããèŠãããŸãã
Reactã§ã¯ãã³ã³ããŒãã³ãã®ç¶æ
ãå€åãããšãã³ã³ããŒãã³ãã®ãµãããªãŒå
šäœãåã¬ã³ããªã³ã°ãããããèªäœããéå§ãããŸãã ã«ãŒãã³ã³ããŒãã³ããšããŠæ©èœããŸãã åã³ã³ããŒãã³ãã®äžå¿
èŠãªåã¬ã³ããªã³ã°ãåé¿ããã«ã¯ã PureComponent
䜿çšããããå¯èœãªå Žåã¯shouldComponentUpdate
å®è£
ããå¿
èŠããããŸãã
Vueã§ã¯ãã³ã³ããŒãã³ãã®äŸåé¢ä¿ã¯ã¬ã³ããªã³ã°æã«èªåçã«è¿œè·¡ããããããã·ã¹ãã ã¯ãç¶æ
ãå€åãããšãã«åã¬ã³ããªã³ã°ããå¿
èŠãããã³ã³ããŒãã³ããæ£ç¢ºã«èªèããŸãã åã³ã³ããŒãã³ãã¯ããã¹ããããã³ã³ããŒãã³ããåŒã³åºãããšãã§ããå¶éãªãã«ãèªåçã«å®è£
ãããshouldComponentUpdate
ã¡ãœããã®ãããªãã®ãæã€ãšèããããšãã§ããŸãã ãã®ã¢ãããŒãã«ãããã¯ã©ã¹å
šäœã®ããã©ãŒãã³ã¹æé©åãäžèŠã«ãªããéçºè
ã¯è£å©ã¿ã¹ã¯ã解決ããã®ã§ã¯ãªããã¢ããªã±ãŒã·ã§ã³ã®åºæ¬æ©èœãäœæããã³éçºã§ããŸããããã§ã2017幎12æ19æ¥ã«ãWebãã¬ãŒã ã¯ãŒã¯ã®ããã©ãŒãã³ã¹ã®åé¡ã®è€éããæãäžãã
æ°ããèšäºãå
¬éããåŸããã¬ãŒã ã¯ãŒã¯ã®ããã©ãŒãã³ã¹ã«é¢ããç§ã®çµè«ãæç¢ºã«ããå¿
èŠãããããšã«æ°ä»ããŸããã Vueã¯å°ãé«éã§ãããçµæã¯æ£ç¢ºã«æž¬å®ãããŠãããã®ã«äŸåããŸãã
âãã³ãã¬ãŒããšJSX
åé¡ã®ãã¬ãŒã ã¯ãŒã¯ã®ãã1ã€ã®å€§ããªéãã¯ãVueããã³ãã¬ãŒãã䜿çšããReactã
JSXã䜿çšããŠããããšã§ãã å€ãã®ããã°ã©ããŒ
ã¯ãã³ãã¬ãŒãèšèªã
奜ãã§ã¯
ãããŸãã ã ããã«ã€ããŠãVueã®ããã¥ã¡ã³ãã«ã¯æ¬¡ã®ããã«æžãããŠããŸãã
ãã³ãã¬ãŒããæžãããã«ã¯ã远å ã®ç¹æ®èšèªãåŠã¶å¿
èŠããããšäž»åŒµãã人ãããŸãã VueãšReactãæ¯èŒãããšãããã®ã¢ãããŒãã¯è¡šé¢çã§ãã ãŸããJSXã䜿çšããŠããããã°ã©ããæ°ããããšãåŠã¶å¿
èŠããªããšããæå³ã§ã¯ãããŸãããéåžžã®JavaScriptã«åºã¥ã远å ã®æ§é ã«çŽé¢ããŠããããã§ãã ãã®çµæãJSã«ç²ŸéããŠãã人ã«ãšã£ãŠã¯ãJSXãç¿åŸããã®ã¯ç°¡åã§ãããJSXã䜿çšããããã«åŽåããããå¿
èŠã¯ãªããšèšã£ãŠãéèšã§ã¯ãããŸããã åæ§ã«ããã³ãã¬ãŒãã¯éåžžã®HTMLã®æ¡åŒµæ©èœã§ãããããHTMLã«ç²ŸéããŠãã人ã¯ããã»ã©èŠåŽããã«ãã³ãã¬ãŒããç¿åŸã§ããŸãã ãã³ãã¬ãŒãã®æ©èœã«ãããããå°ãªãã³ãŒããèšè¿°ããããšã§ïŒããšãã°ã v-on
修食åã䜿çšããããšã§ïŒããã°ã©ããããå€ãã®ããšãéæã§ããããã«ããããšãã§ããŸãã åãåé¡ã解決ããããã«ãéåžžã®JSXãŸãã¯ã¬ã³ããªã³ã°é¢æ°ã䜿çšããå Žåãããã«å€ãã®ã³ãŒããå¿
èŠã«ãªãå ŽåããããŸããã¢ããªã±ãŒã·ã§ã³ã®éçºæã«ãJSXãšãã³ãã¬ãŒãèšèªãæ··åšããç¶æ³ãå¿é
ã§ãã ããã¯ãããžã§ã¯ããè€éã«ããŸãã ããããã®ã¢ãããŒããéµå®ããæ¹ãç°¡åã§ããããããªããšãããåªäœããå¥ã®åªäœãžã®ç§»è¡æã«ãã³ã³ããã¹ãã®åãæ¿ããã«åãè²»ããããããšã¯é¿ããããŸããã ãã ãããã®èãã«å察ãã人ããããããããŸããã
âCSS
Vueã¯ãCSSã䜿çšããŠäœæ¥ããã®ã¯æ¬åœã«çŽ æŽãããã§ãã ãã®ãã¬ãŒã ã¯ãŒã¯ãReactãšæ¯èŒãããŠããVueã®ããã¥ã¡ã³ãã§ã¯ãCSSã«ã泚æãæãããŠããŸãã ç¹ã«Reactã§ã¯ãããããCSS-in-JSã䜿çšããããšãéåžžã«äººæ°ããããŸãã ããã¥ã¡ã³ããèŠãŠãã ããïŒ
CSS-in-JSã¢ãããŒãã®ãã¡ã³ãªãã styled-components-vue
ãvue-emotion
ãªã©ã®äººæ°ã®ããå€ãã®ã©ã€ãã©ãªã®ãããã§ãVueã§ãå©çšã§ããããšã«æ³šæããŠãã ããã ãã®é åã«ãããReactãšVueã®äž»ãªéãã¯ãVueãããã©ã«ãã§åäžãã¡ã€ã«ã³ã³ããŒãã³ãã® style
ã¿ã°ãstyle
èšå®ã«äœ¿çšããããšã§ããCSSãå«ãåäžãã¡ã€ã«ã³ã³ããŒãã³ãã奜ãã§ãã æ¬¡ã®å³ã¯ãããã¥ã¡ã³ãã®ã³ã³ããŒãã³ãã®äŸã瀺ããŠããŸãã ã³ãŒãã®äžéšã«ãã
<style>
泚ç®ããŠãã ããã

ã³ã³ããŒãã³ããã¡ã€ã«å
ã®ãã®ã¿ã°ã¯ããã®ã³ã³ããŒãã³ãã®ã¹ã³ãŒãã«ãã£ãŠå¶éãããã¹ã¿ã€ã«ã«å ããŠãæ§æåŒ·èª¿è¡šç€ºã®åœ¢åŒã§ã³ãŒããç·šéãã䟿å©ããæäŸããŸãã ããã«ããã®ã¢ãããŒãã¯Reactã®CSS-in-JSãããå®è£
ãç°¡åã§ã...
coçæ
ç³»
ãã§ã«è¿°ã¹ãããã«ãReactãšã³ã·ã¹ãã ã¯Vueãšã³ã·ã¹ãã ãããã¯ããã«å€§ãããªã£ãŠããŸãã Reactã®å©ç¹ã®1ã€ã¯ç§ãã¡ã®åã«ãããŸãããããã¯åå¿è
ãæ··ä¹±ãããå¯èœæ§ããããŸãã Vueã¯ã³ãã¥ããã£ã«èªç±ãäžããŸããã 代ããã«ãéèŠãªã©ã€ãã©ãªã¯å
¬åŒã®ãµããŒããåããŠããŸãïŒ
ïŒç¹ã«ïŒã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ãšã«ãŒãã£ã³ã°ã管çããããã®Vueãã«ããŒã©ã€ãã©ãªãŒã¯ãã¡ã€ã³ã©ã€ãã©ãªãŒã«åŸã£ãŠå
¬åŒã«ç¶æããã³æŽæ°ãããŸãã 代ããã«ãReactã§ã¯ããããã®æ©èœãã³ãã¥ããã£ã«è»¢éããæ¹æ³ãéžæãããŸãã ããã«ããããšã³ã·ã¹ãã ã®æçåãä¿é²ãããŸãã ãã ããReactã®äººæ°ã®ãããã§ããã®ãšã³ã·ã¹ãã ã¯Vueãããåºç¯ã§ããâåœå®¶ç®¡ç
ç§ã«ãšã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã®ç®¡çã¯ãReactãšVueã®äž»ãªéãã§ãã Reactã®éèŠãªãã©ãã€ã ã®1ã€ã¯ã颿°åããã°ã©ãã³ã°ã§ãã Reactã§ç¶æ
ã管çããããã«äžè¬çãª
Reduxã©ã€ãã©ãªã䜿çšããŠããå Žåãã¢ããªã±ãŒã·ã§ã³éçºãžã®æ©èœçã¢ãããŒãã®äžéšãšããŠãã§ã«äœæ¥ããŠããŸãã
è¿å¹Žã®Reactã§ã®é¢æ°åããã°ã©ãã³ã°ãžã®ãã®çŠç¹ã¯ãJSéçºè
ã®åºå€§ãªã³ãã¥ããã£ã«å€§ããªåœ±é¿ãäžããŸããã Reactã®äœæè
ã¯é¢æ°åããã°ã©ãã³ã°ã®çºæè
ã§ã¯ãããŸãã-ããã¯ããªãå€ãã¢ã€ãã¢ã§ãã ãã ããReactã¯ãæããã«ããã®æŠå¿µãæ°äžä»£ã®ããã°ã©ããŒã«åºããŸããã ããã¯ãå人çã«ã¯ããè¯ãã³ãŒããæžãã®ã«åœ¹ç«ã€åŒ·åãªããã°ã©ãã³ã°ææ³ã§ãã
颿°åããã°ã©ãã³ã°ã®åºæ¬ååã®1ã€ã¯äžå€æ§ïŒäžå€æ§ïŒã§ãã è峿·±ãå Žåã¯ãå
ç«ã®éèŠæ§ã«é¢ãã
æè¿ã®ãã¬ãŒã³ããŒã·ã§ã³ã§ãããããã§ã®äž»ãªã¢ã€ãã¢ã¯ããå¯äœçšããšåŒã°ãããã®ã管çããã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ãåçŽåããŠäºæž¬å¯èœã«ããããšã§ãã
Reactèªäœã¯ã颿°åããã°ã©ãã³ã°ã®ç²Ÿç¥ãšå®å
šã«äžèŽããŠåŒã³åºãããšã®ã§ããªãã©ã€ãã©ãªã§ããããšã«æ³šæããŠãã ããã
MobXãšåŒã°ããReactã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã管çããããã®äžè¬çãªã©ã€ãã©ãªããããŸãã ã¢ããªã±ãŒã·ã§ã³ã®å¯å€ç¶æ
ãå®è£
ããŸãã Vueã®ããã¥ã¡ã³ãã«ã¯æ¬¡ã®ãã®ããããŸãã
MobXã©ã€ãã©ãªã¯Reactéçºè
ã³ãã¥ããã£ã§éåžžã«äººæ°ããããå®éã«ã¯Vueãšã»ãŒåãåå¿æ§ã·ã¹ãã ã䜿çšããŠããŸãã ããçšåºŠãŸã§ãReact + MobXãã³ãã«ã¯ãã詳现ãªããŒãžã§ã³ã®VueãšèŠãªãããšãã§ããŸãããããã£ãŠããã®çµã¿åããã䜿çšããŠæ°ã«å
¥ã£ãå Žåã¯ãããããVueãžã®åãæ¿ããæ¬¡ã®è«ççãªã¹ãããã§ãããŠã¢ã³ã»ãŠãŒã¯åœŒã®
ãã€ãŒãã®äžã€ã§ããã«ã€ããŠæžããŠããŸãã
å¥ã®äžè¬çãªVueç¶æ
管çããŒã«ã¯ãVuexãšåŒã°ããã©ã€ãã©ãªã§ãã ReduxãšVuexãæ¯èŒãã
èšäºããã®æç²ã¯ããããã®ã©ã€ãã©ãªã®éãã匷調ããã®ã«åœ¹ç«ã¡ãŸãã
Vuexã¯Reduxãšåæ§ãFluxã«è§Šçºãããã©ã€ãã©ãªã§ãã ãã ããReduxãšã¯ç°ãªããVuexã¯Reduxã¬ãã¥ãŒãµãŒæ©èœã®ããã«ãäžå€ã«ããŠå®å
šã«çœ®ãæããã®ã§ã¯ãªããç¶æ
ã倿ŽããŸãã
ããã«ãããVue.jsã¯ãç¶æ
ã倿Žãããšãã«åã¬ã³ããªã³ã°ããå¿
èŠããããã£ã¬ã¯ãã£ãã«é¢ããæ
å ±ãèªåçã«ååŸã§ããŸãã Vuexã§ã¯ãç¹æ®ãªã¬ãã¥ãŒãµãŒã䜿çšãã代ããã«ãã¢ãžã¥ãŒã«ãšåŒã°ãããªããžããªã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
管çãæŽçã§ããŸããããã§ã¯æè¡åéã«ç§»è¡ããŠããŸãããå€ãã®éçºè
ã«ãšã£ãŠããã©ãã€ã ã¯äœããæå³ããŸãã ããããªããæ©èœçãªã¢ãããŒãã«åºå·ããŠãã人ã®äžäººãªããReactã¯ããªãã«ãšã£ãŠããé
åçã§ããå¯èœæ§ãé«ãã§ãïŒãã ããMobXã䜿çšããŠãã人ã¯äŸå€ã§ãïŒã ããã§ãªãå Žåã¯ãVueã®æ¹ãé¢çœããããããŸããã
远å è³æ
Dan Abramovã¯æè¿ãReactãšVueã®æ¯èŒã«ã€ããŠãTwitterã§éåžžã«ç©æ¥µçã«ã³ãã¥ãã±ãŒã·ã§ã³ããšããæåã®ãã®ãæ¯æããŸããã§ããã ãããã®ãã€ãŒãã¯äžèŠã®äŸ¡å€ããããšæããŸãã Danã¯ReactéçºããŒã ã®äžå¡ã§ããã圌ã®ã³ã¡ã³ãã«ã¯å€å°ã®åãããããŸãããããã§ãReactãšVueã®æ¯èŒã«é¢ããè¿œå æ
å ±ãæäŸããŠããŸãã
ãã³ã¯ãReactã䜿çšããç°¡åãªäŸã«å¯Ÿããæ¹å€ã«å¿ããReactã®ç®çã¯ããããžã§ã¯ãèŠä»¶ããŸããŸãè€éã«ãªã£ãŠããã«ãããããããã³ãŒããçè§£ããããããç°¡åãªäŸãã§ããã ãçãããªãããšã ãšè¿°ã¹ãŠããŸãã
ããã§åœŒã¯ãReactãäžããäžã«åããããããŒã¿ã¹ããªãŒã ãå®è£
ããŠãããšããäºå®ã«ã€ããŠè©±ããŠããŸãã ãã®ããã倿Žã«ãããããŒã¿ã¹ããªãŒã ã¯ã³ãŒãããŒã¹ã®äºæž¬å¯èœãªãã¹ã«æ²¿ã£ãŠãªãã€ã¬ã¯ããããŸããäœãã倿Žãããå Žåããããã¯ä»»æã®ã«ãŒãã«æ²¿ã£ãŠè»¢éãããŸãã 圌ã¯ãå Žåã«ãã£ãŠã¯ããå€ãã®ã³ãŒããæå³ãããšèšããŸãã ããããããã«ãããé·æçã«ã¯èªã¿ãããä¿å®ããããã³ãŒãã«ãªããŸãã
ããã§åœŒã¯ãåçŽãªã³ãŒããšè€éãªã³ãŒãã¯éåžžã»ãšãã©åãã«èŠãããšèšããŸãã ãŸããããã°ã©ã ã®è¡šçŸåãé«ããããã«é£ã³è¶ããå¿
èŠã®ããæ·±byã¯ãããŸããã ããŒã¿ãã€ã³ãã£ã³ã°ãŸãã¯ã©ã€ãã©ãªã«ãã£ãŠæäŸãããå¶åŸ¡ãããŒã䜿çšããå Žåãå€ãã®å Žåããã§ã¯ãããŸããã åæã«ãããã¯Vueãæªãããšãæå³ããã®ã§ã¯ãªãïŒå€ãã®äººããã®ãã¬ãŒã ã¯ãŒã¯ã®æ©èœã奜ãïŒããHello Worldããããå°ãªãããšã«åºã¥ããŠãã¬ãŒã ã¯ãŒã¯ã倿ããããã«ãåœŒã®æèŠã§ã¯ãçŸå®ã奪ããŸãã
ãŸãšã
èŠããŠããããã«ããã®è³æã®åé ã§ReactãšVueã®æ¯èŒã®çµæããŸãšããŸããã ããã§ãããã§ç§ã¯åœŒãããã¢ã³ã»ã¯ãã ãŠã§ã«ã«äžãããšãŽã¡ã³ã»ãŠãŒãšã®
ã€ã³ã¿ãã¥ãŒããåŒçšããããšæããŸãã äŒè©±ã¯ãVueãä»ã®ãã¬ãŒã ã¯ãŒã¯ãšæ¯èŒããŠã©ã®ããã«èŠãããã«ã€ããŠã§ããã
æ¢åã®ãã¹ãŠã®ãã¬ãŒã ã¯ãŒã¯ãèæ
®ãããšãVueã¯ããããä»ã®ãã®ãããReactã«äŒŒãŠããŸãããããåºãæå³ã§ã¯ããã¹ãŠã®ãã¬ãŒã ã¯ãŒã¯ã®äžã§ãç§ãäœæãããããã°ã¬ãã·ããã¬ãŒã ã¯ãŒã¯ããšããçšèªãšåŒã¶ããšãã§ããŸãã Vueã¯ãããŒã¿ãšã³ã³ããŒãã³ãã®ãã€ã³ãã£ã³ã°ã衚ãã³ã¢ã§ãããReactã®ããã«èŠãããšããèãæ¹ã§ãã éåžžã«æ£ç¢ºã«å®çŸ©ããããéãããäžé£ã®ã¿ã¹ã¯ã解決ããŸãã Reactãšæ¯èŒããŠãVueã¯ãã¯ãããžãŒã®ã¢ã¯ã»ã·ããªãã£ã«æ³šç®ããŠããŸãã ã€ãŸããHTMLãJavaScriptãCSSãªã©ã®åºæ¬ãç¥ã£ãŠãã人ãã§ããã ãæ©ãåŠç¿ã§ããããã«ããããšãç®çãšããŠããŸãã
Vueã¯ãã³ã³ãã¯ãã§æå°éã®ã³ã¢ãæã€ãã¬ãŒã ã¯ãŒã¯ãšããŠæ§ç¯ããããšããŠããŸãã ããããã¢ããªã±ãŒã·ã§ã³ã®è€éããå¢ãã«ã€ããŠãæ°ãã課é¡ã«çŽé¢ããã®ã¯ããèªç¶ãªããšã§ãã ããšãã°ãã«ãŒãã£ã³ã°ãã³ã³ããŒãã³ãéã®ããŒã¿äº€æãå€§èŠæš¡ã¢ããªã±ãŒã·ã§ã³ã®ç¶æ
ã®åé¢ã åãã©ã€ã³ã§-ã³ãŒãããŒã¹ãã¢ãžã¥ãŒã«åããã®ã«åœ¹ç«ã€ãããžã§ã¯ããæ§ç¯ããããã®ããŒã«ã®å¿
èŠæ§ã ããã§ã¯ãã¹ã¿ã€ã«ã®æ§æãšã¢ããªã±ãŒã·ã§ã³ãæ§æããããŸããŸãªè¿œå ãªãœãŒã¹ã«ã€ããŠè³ªåã§ããŸãã EmberãAngularãªã©ãVueã³ã¢ãããå¹
åºãã¿ã¹ã¯ãã«ããŒãããããå®å
šãªåŒã³åºããå¯èœãªå€ãã®ãã¬ãŒã ã¯ãŒã¯ã¯ãéçºè
ã«ééããå¯èœæ§ã®ãããã¹ãŠã®åé¡ã®è§£æ±ºçãæäŸããããšãããã¬ãŒã ã¯ãŒã¯ã«ãã¹ãŠãçµã¿èŸŒãããšã詊ã¿ãŸãã
ããã¯ããã€ãã®åŠ¥åã§ãã ããã°ã©ããŒãéçºäžã«ãã¬ãŒã ã¯ãŒã¯ãã©ã®ããã«äœ¿çšãããã«ã€ããŠã®ããå€ãã®ä»®å®ãäœæããããšããã®ãããªãã¬ãŒã ã¯ãŒã¯ãå¯èœã«ããæè»æ§ãäœäžããŸãã æåã®å察ã®å¥ã®ãªãã·ã§ã³-ãšã³ã·ã¹ãã ãæŽ»åã«æºã¡ãŠããReactã§è¡ãããããã«ããã¹ãŠã®è£å©ã¿ã¹ã¯ã®ãœãªã¥ãŒã·ã§ã³ãã³ãã¥ããã£ã«ã·ããããŸãã ããã§ã¯å€ãã®ã¢ã€ãã¢ãçµ¶ããçºçããŸããããã®ç¶æ
ã§ã¯äžå©ãªç¹ããããŸãã ã«ãŒãã«ãéåžžã«éãããæ©èœã»ãããæäŸãããšãã«ãVueã¯åŠ¥åç¹ãèŠã€ããããšããŠããŸãã ãã ããããã«å ããŠãã«ãŒãã£ã³ã°ã·ã¹ãã ãããããžã§ã¯ãæ§ç¯çšã®ããŒã«ã»ãããã³ãã³ãã©ã€ã³ããŒã«ãªã©ã®ã¢ããªã±ãŒã·ã§ã³ç¶æ
管çã·ã¹ãã ãªã©ã段éçãªå®è£
ã«é©ãããœãªã¥ãŒã·ã§ã³ãæäŸããŠããŸãã ãããã¯ãã¹ãŠå
¬åŒã«ãµããŒããããååã«ææžåãããŠãããå
±å䜿çšãæ³å®ããŠèšèšãããŠããŸãããéçºè
ã¯ãããããã¹ãŠäœ¿çšãã矩åã¯ãããŸããã ããã¯ããããããã¬ãŒã ã¯ãŒã¯ãšããŠã®Vueãä»ã®åæ§ã®ãœãªã¥ãŒã·ã§ã³ãšåºå¥ããæãéèŠãªããšã ãšæããŸãã芪æãªãèªè
ïŒ æ¥å¹Žã®ReactãšVueã®éåœã¯äœã ãšæããŸããïŒ