ãå³è§£ã§æ¯èŒãReact vs Vue vs Svelte â ããã³ããšã³ãäžå€§ãã¬ãŒã ã¯ãŒã¯å¯Ÿæ±º
ã©ããWebããŒãžã®èŠãç®ãšåããäœãããã®ãããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ãã ããHTMLãšCSSãšJavaScriptãå¹çããçµã¿åãããéå ·ãªãã ãã©ããã®ããæ¹ãäžè äžæ§ãªãã ãReact㯠FacebookïŒMetaïŒçãŸããVueã¯Evan Youãããå人ã§å§ãããããžã§ã¯ããSvelteã¯Rich Harrisãããçãã æ°äžä»£ã®ãã¬ãŒã ã¯ãŒã¯ã ãã
å人ã§äœã£ããã¬ãŒã ã¯ãŒã¯ãäžçäžã§äœ¿ãããŠãã£ãŠããããïŒä»çµã¿ã¯ã©ãéãã®ïŒ
äžçªå€§ããªéãã¯ããã€ä»äºããããããªãã ãReactãšVueã¯ãä»®æ³DOMãã£ãŠããä»çµã¿ã䜿ã£ãŠããã©ãŠã¶ã®äžã§ãªã¢ã«ã¿ã€ã ã«ç»é¢ã®å·®åãèšç®ããŠæŽæ°ãããäžæ¹Svelteã¯ãã³ã³ãã€ã©ãæ¹åŒã§ãéçºè ãæžããã³ãŒããäºåã«æé©ãªJavaScriptã«å€æãã¡ãããã ãã ãããã©ãŠã¶ã«å±ãæç¹ã§ç¡é§ããªããŠãåäœã軜ããã
äºåã«å€æãã¡ããã£ãŠããšã¯ãSvelteãäžçªéãã£ãŠããšïŒ
ãã³ãããŒã¯çã«ã¯Svelteãæå©ãªããšãå€ããããã³ãã«ãµã€ãºïŒãã©ãŠã¶ã«éããã¡ã€ã«ã®å€§ããïŒãå°ãããªããããããã ReactãVueãé²åãç¶ããŠãŠãReact 19ã®ãµãŒããŒã³ã³ããŒãã³ããVue 3ã®Vaporã¢ãŒãã§å·®ã¯çž®ãŸã£ãŠããŠãããå®éã®ã¢ããªã§ã¯ããã¬ãŒã ã¯ãŒã¯ã®é床差ããæžãæ¹ã®æé©åã®ã»ãã圱é¿ã倧ããããšãå€ããã ã
ãªãã»ã©âŠãåå¿è ãåŠã³ãããã®ã¯ã©ããªã®ïŒ
åŠç¿ã³ã¹ããäžçªäœãã®ã¯Vueã ãšèšãããŠãããHTMLã«è¿ãããã³ãã¬ãŒãæ§æãã§æžãããããHTMLãšCSSãããã人ãªãå ¥ãããããSvelteã䌌ãåŸåã§ãç¬èªã®èšæ³ãçŽæçã ããèŠãããããã ãReactã¯ãJSXãã£ãŠããHTMLãšJavaScriptãæ··ããç¬ç¹ã®æžãæ¹ããããããæåã¯ã¡ãã£ãšæžæããããããªããã
ãããªãã ãnpmã®ããŠã³ããŒãæ°ã§ã¯Reactããã³ããã§ãæ±äººæ°ãå§åçã«å€ãããšã³ã·ã¹ãã ïŒåšèŸºã©ã€ãã©ãªãããŒã«ïŒãæãå å®ããŠãããVueã¯ã¢ãžã¢åãç¹ã«äžåœã𿥿¬ã§äººæ°ãé«ããŠãSvelteã¯2020幎以éã«æ¥æé·ããŠããã©ãŸã ã·ã§ã¢ã¯å°ããã ãããä»äºã§äœ¿ãããªãReactããè¶£å³ãå人éçºã§æ¥œããããªãVueãSvelteãã£ãŠããéžã³æ¹ããããã
ä»äºã®ããšãèãããšReactãªãã ããã§ãããããã«æåãªãã¬ãŒã ã¯ãŒã¯ãããã£ãŠèãããã ãã©âŠïŒ
ãããšããã«æ°ã¥ãããïŒReactã«ã¯Next.jsãVueã«ã¯NuxtãSvelteã«ã¯SvelteKitã£ãŠãããã¡ã¿ãã¬ãŒã ã¯ãŒã¯ãããããã ããã¬ãŒã ã¯ãŒã¯ã®äžã«ããã«äŸ¿å©æ©èœãä¹ãããã®ã§ãã«ãŒãã£ã³ã°ïŒããŒãžé·ç§»ïŒããµãŒããŒãµã€ãã¬ã³ããªã³ã°ïŒSSRïŒãç°¡åã«å®çŸã§ãããã¡ãªã¿ã«ãã®ããã°ã¯Astroã£ãŠãããã©ã®ãã¬ãŒã ã¯ãŒã¯ãšãçµã¿åãããããããŒã«ã§äœã£ãŠããã ãã
ãã¬ãŒã ã¯ãŒã¯ã®äžã«ãã¬ãŒã ã¯ãŒã¯âŠã¡ãã£ãšãããããããå®éã®ã³ãŒãã®æžãæ¹ã£ãŠã©ã®ãããéãã®ïŒ
ããšãã°ããã¿ã³ãæŒãããã«ãŠã³ããå¢ãããã£ãŠããåãæ©èœãäœãå ŽåãReactã¯`useState`ããã¯ã䜿ã£ãŠçŽ10è¡ãVueã¯`ref`ã䜿ã£ãComposition APIã§çŽ10è¡ãSvelteã¯`let count = 0`ãšæžãã ãã§çŽ5è¡ã§æžããã ãSvelteã¯å€æ°ã«ä»£å ¥ããã ãã§ç»é¢ãæŽæ°ããããããäœèšãªããŸããªããèŠããªãã®ãé åã ãã
5è¡ã§æžãã®ã¯ãããïŒãããããã©ã³ãšã³ãžãã¢ã§ãæ©ããããªãã€ã³ãã£ãŠäœïŒ
äžçªæ©ãã®ã¯ãå€§èŠæš¡ã«ãªã£ããšãã®èšèšãã ããReactã¯èªç±åºŠãé«ãåãç¶æ 管çããã©ã«ãæ§æã®ãã¹ããã©ã¯ãã£ã¹ã人ãäŒç€Ÿã«ãã£ãŠãã©ãã©ãVueã¯Options APIãšComposition APIã®2ã€ã®æžãæ¹ãå ±åããŠãŠãããŒã ã§çµ±äžããã®ã課é¡ã«ãªããã¡ãSvelteã¯ã·ã³ãã«ã ãã©ãå€§èŠæš¡éçºã®å®çžŸããŸã å°ãªããŠã100ç»é¢ãè¶ ãããããªå·šå€§ã¢ããªã®èšèšãã¿ãŒã³ã確ç«ããããŠãªããã ã
ã©ããå®ç§ãããªããã ãâŠã
ãããéã®åŒŸäžžã¯ãªããã ãã§ãæè¿ã®ãã¬ã³ããšããŠé¢çœãã®ã¯ãããµãŒããŒãã¡ãŒã¹ãããžã®ååž°ã ããReactã®Server ComponentsãNuxtã®ãµãŒããŒAPIãSvelteKitã®ãµãŒããŒããŒã颿°ãã©ã®ãã¬ãŒã ã¯ãŒã¯ãããã©ãŠã¶ã§ãããããŠããåŠçããµãŒããŒã«æ»ãããã£ãŠåããŠããããã³ããšã³ãã®äžçã¯æ¯ãåã®ããã«è¡ã£ããæ¥ããããªããé²åããŠããã ãã