Reactã¢ããªã±ãŒã·ã§ã³ã®äœæãéå§ãããã³ã«ãäœããã®åœ¢ã§ãªãã·ã§ã³ãéžæããŸãã
- åã®ãããžã§ã¯ãã®ã³ããŒã¢ã³ãããŒã¹ã
- ããçš®ã®ãã€ã©ãŒãã¬ãŒããŸãã¯ãžã§ãã¬ãŒã¿ãŒïŒãšãŒãã³ãªã©ïŒ
- æ§æãå¿ èŠãšããªãæ¢è£œã®ãã¬ãŒã ã¯ãŒã¯
- ãã¹ãŠããŒãããèªåã§æžããŸã
ããããã®æ¹æ³ã«ã¯ãé·è·é¢ãšçè·é¢ã®äž¡æ¹ã§ãç¬èªã®é·æãšçæããããŸãã
äžéšã®ãœãªã¥ãŒã·ã§ã³ã¯ãæåã¯è€éããé ããããã«éå§ã§ããããã«ããŸãã ããã¯ã¿ãŒã³ããŒãœãªã¥ãŒã·ã§ã³ã®ãããªãã®ã§ãããçµæãšããŠããã®ãããªãœãªã¥ãŒã·ã§ã³ã¯ååãªæè»æ§ããªãã埮調æŽãé£ããå ŽåããããŸãã äžæ¹ãæåã¯ãã¹ãŠãå°ãæªãããŠé ãããã«æãããããããŸãããéå§ããã«ã¯å°ãæãå ããå¿ èŠããããŸããããã®å©ç¹ã¯æããã«ãªããŸãã åžžã«ãã¹ãŠãæåããããçŽãæ©äŒããããŸããããã®å Žåã¯ç¡æ°ã®åŽé¢ãæ åœããé¢é£ãããã¹ãŠã®æè¡ã«é¢ããéåžžã«æ·±ãç¥èãå¿ èŠã«ãªããŸãã
æããã«ãè€æ°ã®ãããžã§ã¯ãã®éçºã«é¢ããŠã¯ã瀟å ã«ç¹å®ã®æšæºãããããšã¯éåžžã«æçšã§ãããããã©ã®ããŒã ã§ãä»»æã®ãããžã§ã¯ãã«åãæ¿ããããšãã§ããŸãã ãŸãã¯ãåžžã«æ°ãããããžã§ã¯ããäœæããŠãããã¶ã€ã³ã¹ã¿ãžãªã®å Žåã ãã®å Žåããã¬ãŒã ã¯ãŒã¯ã®äœæã«ãããæéã¯ã§ããã ãçãããå¿ èŠããããŸãã å ±éã®æšæºã¢ãããŒãã«ãããããŒã ãšéçºè ã¯ç¥èãå ±æã§ããæšæºãœãªã¥ãŒã·ã§ã³ããã¹ããã©ã¯ãã£ã¹ãªã©ã®ç¹å®ã®ããŒã¹ãç¶æã§ããŸãã
åžå Žåæã§ã¯ãReactã§ãµã€ããäœæããããã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãæäŸããããã€ãã®ããªãå®å®ãããããžã§ã¯ããããããšã瀺ãããŠããŸãã æ確ã«ããããã«ããã¹ãŠã®åè£è ãå¯èœãªéãç°ãªãæ§è³ªãæã€ããã«ããããã®ããã€ããéžæããŸããã
åè£è
- Zeit Next.js ïŒç§ã¯å¥ã«èšäºãæžããŸããïŒNext.JS + Reduxã§å圢/ãŠãããŒãµã«ã¢ããªã±ãŒã·ã§ã³ãäœæããŸã
- ãŠã©ã«ããŒãã©ãé»æ¥µ
- Facebook Create React App ïŒ+ã«ã¹ã¿ã ãœãªã¥ãŒã·ã§ã³ã®äžéšïŒ
- ããšãã°ãç§ã®èšäºã React + Router + Redux + Expressã§ã®ãŠãããŒãµã«/å圢ã¢ããªã±ãŒã·ã§ã³ã®ç°¡çŽ åãã®ã«ã¹ã¿ãã€ãº
- æ§ç¯ããWebpack +èšå®ã容æã«ããWebpackãããã¯
- ExpressJSãµãŒããŒ
- ç¶æ 管çã®ãªãã¥ãŒã¹
- ã³ãŒãã®æ§é åãšããã²ãŒã·ã§ã³ã®ããã®React Router
- ãµãŒããŒã¬ã³ããªã³ã°ã§ãã¹ãŠããªã³ã¯ããããã®React Serverãäœæãã
ææ°ã®ã¢ããªã±ãŒã·ã§ã³ãéçºãããšãã«èŠããŠããå¿ èŠãããããš
ãã£ãã·ã¥å¯èœãªããŒã
ã¢ããªã±ãŒã·ã§ã³å šäœã1ã€ã®å·šå€§ãªJSãã¡ã€ã«ã«åéãããšããŠãŒã¶ãŒã¯ããŒãã¢ãã¡ãŒã·ã§ã³ãèŠèŽããªãããæ°žä¹ ã«ããŒããããŸãã 調æ»ã«ãããšããŠãŒã¶ãŒã¯3ç§ã§ããŒãããæéããªããµã€ããé¢ããããšã奜ã¿ãŸãã
- Next.jsã¯ãããŒãžããšã«åå¥ã®ãã£ã³ã¯ãèªåçã«äœæããŸã
- é»æ¥µ ã Reactã¢ããªã®äœæ ãReactã«ãŒã¿ãŒã®ã«ã¹ã¿ã 䜿çšã Webpackã«ã¯ãã³ãŒãåå²ãšåŒã°ãããã®ããããReact Routerã§ããŸãæ©èœããŸãã ãšããã§ã Webpack 2ã§ã¯åç
import()
ãµããŒããããããã«ãªããŸãã ã ãŸã Webpack 1.x ã«åº§ã£ãŠãã人ã«ã¯ã解決çããããŸã ã é»æ¥µã«ã¯ã解決çãšããŠç¹å¥ãªååããããŸãã
éç管ç
äžæ¹ã§ãã¢ããªã±ãŒã·ã§ã³ã¯ããªãœãŒã¹ïŒç»åãã¹ã¿ã€ã«ãã¹ã¯ãªããïŒã®ããã«ãããã¯ãŒã¯ãå床巡åããªãããã«ãå¯èœãªéãããã«é ä¿¡ããå¿ èŠããããŸããããšãã°ã ãã¹ãŠã®ã©ã€ãã©ãªãéèŠãªCSSã¹ã¯ãªãããå«ããã³ããŒãã£ã³ã¯ã ãããåæã«ããã®ããŒãžã§å¿ èŠãªãã®ã ããã§ããã ãé ä¿¡ããããšæããŸãã
- React Appã®äœæã§ã¯Webpackã®æ§æãå€æŽã§ããªããããããã«ã¹ãã³ã瀺ããŸã
- Next.js ã é»æ¥µ ãããã³ã«ã¹ã¿ã ã䜿çšãããšãWebpackã®èšå®ãå€æŽããŠããã©ã°ã€ã³ãä»ããŠååŸããå 容ãå€æŽã§ããŸã
ãµãŒããŒåŽã®ã¬ã³ããªã³ã°
ã¢ããªã±ãŒã·ã§ã³ã¯å¿ èŠãªãã¹ãŠã®ããŒã¿ãããŠã³ããŒãããæ¢æã®HTMLãçæã§ããŸãããã®HTMLã¯ããŒã¿ãšãšãã«ã¯ã©ã€ã¢ã³ãã«éä¿¡ããããããæåã®ããŠã³ããŒããšãå°ãªããšã衚瀺ã®ããã«å°ãªããšãäœãããµã€ãã«è¡šç€ºãããç¬éãšã®éã®é 延ãå®è³ªçã«ãªããªããŸãã ããããã¹ãŠäœ¿çšããæ©äŒã«ã€ããŠã¯è©±ããŠããŸãããããã¯å¥ã®åé¡ã§ãã
Googleã¯ãå¿çæéãå«ããµã€ããã©ã³ã¯ä»ãããŸãã æ€çŽ¢ãšã³ãžã³ã¯AJAXãµã€ããã¬ã³ããªã³ã°ã§ãããšããäºå®ã«ãããããããããã¯äœçœ®ã«æªã圱é¿ãäžããããããµã€ãã¯æ€çŽ¢ãšã³ãžã³ãæ¶åã§ããããŒãžã§ã³ãæäŸããå¿
èŠããããŸãã ããã«ã¯åé¡ããããŸããã¡ã€ã³ã³ã³ãã³ãé åã ãã§ãªãããã¹ãŠã®ããŒã¿ãããŠã³ããŒãããå Žåããã¹ãŠã®ããŠã³ããŒããçµäºããããšããµãŒããŒã¬ã³ãã©ãŒã«æ確ã«ããæ¹æ³ã¯ãããŸããã ããã«å¯Ÿãã確ç«ãããã¢ãããŒãã¯ãŸã ãããŸããã ã«ã¹ã¿ã ããŒãžã§ã³ã§ã¯ãã³ã³ããŒãã³ãããªãŒã解æããŠãããšãã°éçã¡ãœããgetInitialProps
ïŒ getInitialProps
é¡äŒŒïŒãªã©ãããããããåŒãåºããããããã¹ãŠã®ã¡ãœãããå€ãè¿ããšãã¬ã³ããªã³ã°ã§ããŸãã
- Create React Appã¯ãµãŒããŒã¬ã³ããªã³ã°ã®ãã¬ãŒãã³ã°ãåããŠããããåŠç¿ããããšã¯ã»ãšãã©ãããŸãã
- Next.jsãšElectrodeã«ã¯ãã®äž»ãªæ©èœããããŸã
- ãã¹ãŠããŒãããæ§ç¯ããå ŽåïŒã€ãŸãã ã«ã¹ã¿ã ïŒããããæ§ç¯ããå¿ èŠããããŸã
ã³ã³ããŒãã³ãèªäœãããŒã¿ããå¿ èŠãªãã®ãèšãããšãã§ããããã«ããããã«ãRelay + GraphQLãçºæãããŸããããçæã¯ãã®å©ç¹ãäžåããŸãã å¥ã®ãµãŒããŒãå¿ èŠã§ãã ããã¯éåžžã«åé·ã§ãïŒã¹ããŒã èªäœ+çªç¶å€ç°ã¯éåžžã«é¢åã§ãïŒã æãåçŽãªã¢ã¯ã·ã§ã³ã®ããã«èšè¿°ããå¿ èŠãããã³ãŒãã®è€éãã¯ãã»ãšãã©ãã¹ãŠã®ããŒãã¹ã殺ããŸãã ãããããŒã ã®èª°ãã«ãŒããã説æããããšãåé¡ã§ãã ããã«ãç¹å¥ãªBabelãã©ã³ã¹ãã©ãŒã ãšãåè·¯ãããŠã³ããŒãããŠã³ã³ãã€ã«ããããã®ãŠãŒãã£ãªãã£ãå¿ èŠã«ãªããŸãã ãã®çµæãSEOãšäºææ§ã®ãªããã®ãåŸãããŸãã æ¢åã®GraphQL APIã®ã¿ã䜿çšããå Žåãç¶æ³ã¯ãããã«æ¹åãããããšãèªèãã䟡å€ããããŸãã ããã¯éåžžã«ææãªæè¡ã§ããç§ã¯ã¿ããªããããããå奜çã«ããããšããªããšãããŠããããšä¿¡ãããã§ãã ãŸããApolloãã¬ãŒã ã¯ãŒã¯ã®ãããªãã®ã«æ³šç®ãã䟡å€ããããŸãã
調æ»äžã«ããµãŒããŒãµã€ãã¬ã³ããªã³ã°ã«åœ¹ç«ã€ã©ã€ãã©ãªãããã€ãäœæããŸããã
- React Serverã®äœæ ïŒ ã«ã¹ã¿ã çš ïŒ
- Next.jsãšRedux
ãµãŒããŒåŽã®ã¬ã³ããªã³ã°ããã©ãŒãã³ã¹
ããæç¹ã§ããµãŒããŒã®ããã©ãŒãã³ã¹ã¯ã³ã³ããŒãã³ãã®ã¬ã³ããªã³ã°ã«ååã§ã¯ãªããªããŸãã ãã®å Žåãäžéšã®ã³ã³ããŒãã³ãã¯ãã£ãã·ã¥ãéå§ã§ããŸãã
- é»æ¥µã«ã¯ãã©ã°ã€ã³ããããæŠéã¢ãŒãã§ã¯ããã¹ãŠã®ã³ãŒãã¯ããªã³ã³ãã€ã«ããããã¡ã€ã«ããååŸãããŸã
- Next.jsã¯ãŸã ããã«å¯ŸããŠäœãæäŸããŠããŸããããã³ãŒãã¯ã³ã³ãã€ã«ããŠå šäœãä¿åããŸã
- ã«ã¹ã¿ã ãœãªã¥ãŒã·ã§ã³ã§ã¯ããã€ãã®ããã«ããã¹ãŠãèªåã§è¡ãå¿ èŠããããŸããããšãã°ã Create React Serverã䜿çšããŠããã»ã¹ãç°¡çŽ åããæ¹æ³ããããŸããããµãŒããŒã®ã³ã³ãã€ã«æžã¿ã³ãŒãã®ä¿åã¯å¶åŸ¡ããŸããã
- React AppãµãŒããŒã¬ã³ããªã³ã°ã®äœæã«ã¯ãããŸãã
CSSããªããã»ããµ
å€ãã®äººãLESS / SASS / Stylus / PostCSSã䜿çšããŠã¹ã¿ã€ã«ã§å€æ°ãšããã¯ã¹ã€ã³ã䜿çšãããããã³ãŒãã¯ããç°¡æœã§ç°¡æœã«ãªããŸãã
- ElectrodeãšNext.jsã¯ãã®ããã«äœãæäŸããŸãããWebpackæ§æãã«ã¹ã¿ãã€ãºã§ããŸãããããã¯æšå¥šãããŸãã
- Create React Appã¯ãŸã£ãããµããŒãããŠãããã説æããããŸãïŒTLãDRã¯æ§æã䜿çšããŸãïŒ
- ã«ã¹ã¿ã ãããžã§ã¯ãã§ã¯ãéåžžã®WebpackããŒããŒã䜿çšã§ããŸã
ã©ã®åè£ã§ããCreate React Appã®ããã«ãSASS / LESSã¹ã¿ã€ã«ã®èåŸã«ããåå¥ã®ãã«ã/ç£èŠããã»ã¹ããã€ã§ãäœæã§ããŸãããçµæã®CSSãæã§ã¢ããªã±ãŒã·ã§ã³ã«æ¥ç¶ããå¿ èŠããããŸãïŒCreate React Appã«çŽæ¥ã€ã³ããŒãã§ããŸãïŒã ãã®å Žåãã¯ãªãã£ã«ã«CSSãšãããã¢ãžã¥ãŒã«ã®ãªããŒããããã³ãµãŒããŒåŽã®ã¬ã³ããªã³ã°ã¹ã¿ã€ã«ãæžå¿µäºé ãšãªããéã«ã¹ã¿ã ãœãªã¥ãŒã·ã§ã³ã®å©ç¹ããªããªããŸãã
ãµãŒãããŒãã£ã®UIã©ã€ãã©ãªãšã®çµ±å
æããã«ãã€ã³ã¿ãŒãã§ã€ã¹ã«æé©ãªã©ã€ãã©ãªã䜿çšããããšã§ãç¹ã«Twitter BootstrapãMaterial Designãªã©ã«ã€ããŠè©±ããŠããå Žåã補åã®å€èŠ³ãæ¹åããäœæãå éããŸãã éåžžããããã®ã©ã€ãã©ãªã«ã¯CSSããã³ãã«ãããŠãããCSSã¯ã¢ããªã±ãŒã·ã§ã³ã«äœããã®åœ¢ã§å«ããå¿ èŠããããŸãã
- Next.jsã§ã¯ ã
_document.js
ïŒã¡ã€ã³ãã³ãã¬ãŒãïŒã§ã¹ã¿ã€ã«ãçŽæ¥æ¥ç¶ã§ããŸããã_document.js
ã¯static
ãã£ã¬ã¯ããªã«é 眮ããå¿ èŠãããstatic
ã ããªããã»ããµã䜿çšããå Žåã¯ãã¹ã¿ã€ã«ã䜿çšããŠä»ã®ãã¡ã€ã«ã®äžããCSSãå«ããããšããå§ãããŸãïŒã«ã¹ã¿ã_document
ãšã³ã¬ã¯ã¿ãŒãŸãã¯ã«ã¹ã¿ã Webpack_document
ãä»ããŠæ¢ã«æ¥ç¶ã§ããŸãïŒã - é»æ¥µã䜿çšãããšãCSSãçŽæ¥ââã€ã³ããŒãã§ããŸãã ã«ã¹ã¿ã HTMLãã³ãã¬ãŒãã䜿çšããããšãã§ããŸãïŒãã ãããã«ãã«å床å«ããå¿ èŠããããŸãïŒã ãŸãã¯åã³ã«ã¹ã¿ã webpackããŒããŒ
- Reactã¢ããªã®äœæ㧠CSSã€ã³ããŒããå¯èœ
ã¯ãªãã£ã«ã«CSS /æãç³ãŸããCSS
倧ãŸãã«èšã£ãŠãç¹å®ã®ã¹ã¿ã€ã«ã«ã¯HTMLãããŒãã§ããããããŠãŒã¶ãŒã¯ããããããããã¹ã¿ã€ã«ãèŠãããšãã§ããŸããã äžå®å®ãªã³ã³ãã³ãã®ãã©ãã·ã¥ïŒFOUCïŒã æçšã§ããããŸã£ããéèŠã§ã¯ãããŸããã çŸä»£ã®ãããã¯ãŒã¯ã¯éåžžã«çç£çã§ãæ倧100 KBã®ã¹ã¿ã€ã«ã·ãŒãã¯ãŸã£ãããããŸããã
- é»æ¥µã«ã¯ç¹å¥ãªãã©ã°ã€ã³ããããŸã
- Next.jsã¯JSXã§CSSã䜿çšãããããCSSã¯åžžã«ã³ã³ããŒãã³ãã«çŽæ¥å«ãŸããŸãã
- æ®ãã«ã€ããŠã¯ãç¬èªã®äœããäœæã§ããŸã
ã¹ãã³ã®ãµããŒã
ããã¯èª°ããå¿ èŠãšããããã§ã¯ãªããŸããªã±ãŒã¹ã§ãããå€ãã®ã¢ããªã±ãŒã·ã§ã³ã¯ç°ãªããã©ã³ããŸãã¯ãŠãŒã¶ãŒã®å©äŸ¿æ§ã®ããã«ç°ãªãã¹ãã³ããµããŒãããŠããŸãïŒããšãã°ãæ¿ãè²ãæããè²ãªã©ïŒã
- Next.jsã¯JSã§CSSã䜿çšãããããJSã¢ãããŒãã䜿çšããŠãCSSã®é¢æ°ãäœæããå€æ°ã®ã¹ã¿ã€ã«ãèšå®ããå€æ°èªäœãåŒæ°ãšããŠååŸã§ããŸãã
- é»æ¥µã¯å€æ°ã®ãªãCSSã¢ãžã¥ãŒã«ã䜿çšããŸã
- ãã«ãããã·ãŒãžã£ã§CSSããªããã»ããµã䜿çšããå Žåãåºæ¬ã¹ã¿ã€ã«ã«å€æ°ãå ¥åããç°ãªãå€æ°ãªãŒããŒã©ã€ãã§è€æ°ã®å ¥åãã€ã³ããäœæããã¢ããªã±ãŒã·ã§ã³ã«ãã€ã³ãã®1ã€ãå«ããããšãã§ããŸãïŒããšãã°ãTwitter Bootstrapã¯ãã®ããã«æ©èœããŸãïŒ
çæ ç³»ãšã³ãã¥ããã£
é©åã«èšèšããã³ææžåããããšã³ã·ã¹ãã å ã«äœãããšã¯ãå°ããªã©ã€ãã©ãªã®å±±ãç解ãããããåžžã«åªããŠããŸããäŸåé¢ä¿ã®æ··ä¹±ãå°ãªããèè ã«ãã£ãŠäžããããæ瀺ã«åŸãèœåãäŸã®å±±ã§ãã ãã¬ãŒã ã¯ãŒã¯ã䜿çšããªãå Žåãæçµçã«ã¯èªåã§ãã¬ãŒã ã¯ãŒã¯ãäœæãããšãããã¬ãŒãºãèŠããŠããŸãã
- Electrode㯠ãGithubã«500åã®æãç²åŸããŠããŸããGithubã¯StackOverflowã®ãã±ããã質åã«çããã¢ã¯ãã£ããªã³ãã¥ããã£ã§ãã ããã¥ã¡ã³ãã¯ä¹±éã§éåžžã«æ確ã§ã¯ãªããéåžžã«è¥å€§åããäŸããããŸãããèŠãã°ãããªãã¯çããããšãã§ããŸãã
- Next.jsã«ã¯ Githubã«ã9000åã®æãããããã«ãªã¯ãšã¹ããšãã±ããã«å¯Ÿããè¶ é«éå¿çã§ãã åçŽãªã±ãŒã¹ãšè€éãªã±ãŒã¹ã®ããã¥ã¡ã³ãããããããããå Žåã«èšå€§ãªæ°ã®äŸããããŸãã
- Create Reactã¢ããªã¯ ãGithubã§æ倧21.500åã®æãç²åŸããŠãããæ倧ã®ã³ãã¥ããã£ã§ãã ãã¬ãŒã ã¯ãŒã¯èªäœã¯éåžžã«å°ãããåå§çã§ãããããããã«ææžåããããšãããããŸããããèè ã¯å€ãã®äŸãšã¬ã·ããæžãããšãã§ããŸããã
- ã«ã¹ã¿ã ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãèªåèªèº«ã§ããã¹ãŠã®äŸãããã¥ã¡ã³ããã³ãã¥ããã£ãã€ã³ã¿ãŒãããäžã«æ£ãã°ã£ãŠããŸãããã¹ãŠãæ¢ããèªåã§ã¹ããŒããœãªã¥ãŒã·ã§ã³ãéžæããå¿ èŠããããç¥èã®å¯äžã®ãã£ãªã¢ãååŸããå¿ èŠããããŸãããããã¯äŒç€Ÿã«ãšã£ãŠéåžžã«æªãããšã§ãã ããã¥ã¡ã³ããèªåã§äœæããå¿ èŠããããŸãã
ãã¹ã
ãã¹ãã®ãªãçŸä»£ã®äžçã§ã¯ã誰ããããè°è«ãã人ã¯ããªããšæããŸãã
- Electrodeã¯ãPhantomJSã䜿çšããŠãæ£çŽãªãã©ãŠã¶ãŒãã¹ããšåå¥ã®ãµãŒããŒãã¹ããè¡ããŸããããã¯ãå¯èœãªéãæé«ã®ã«ãã¬ããžã§ãã
- Create React Appã«ã¯Jestãä»å±ããŠããŸãããããã¯è¯ãããšã§ããããã©ãŠã¶ãŒã§å®è¡ãããªããããå ¬å¹³ãªå ±éã§ã¯ãããŸãã
- Next.jsãšã«ã¹ã¿ã ã®å Žåããã¹ãŠãèªåã§è¡ããŸã
å®åãæ§æãåæè²»çš
1ã€ã®æšæºã«åºã¥ããŠå€ãã®ãããžã§ã¯ããè¡ãäºå®ã§ããããããœãªã¥ãŒã·ã§ã³ã®åæã»ããã¢ãããšç«ã¡äžãã«äŒŽããã©ãã«ãã§ããéãå°ãªãããããšèããŠããŸãã ãã®ãããåæåã§çæããããã¡ã€ã«ãšæ§æã¯ã§ããéãå°ãªãããããšãæãŸããã§ãã
- Next.jsãšCreate React Appã¯èšå®ãªãã§å®å šã«åäœããå¿ èŠãªãã¡ã€ã«ãå¥çŽã«åŸã£ãŠå解ããã ãã§ããã¹ãŠãéæ³ã®ããã«åäœããŸã
- Electrodeã«ã¯Yeomançšã®ãžã§ãã¬ãŒã¿ãŒãä»å±ããŠããã巚倧ãªãã¡ã€ã«ã®å±±ãçæããã ããªã®ã§ãäœã«æ £ãããã«æéãè²»ããå¿ èŠããããŸãã ãã®å±±ã«ã¯æåéããã¹ãŠã®ãã®ããããŸãïŒæ§æããµãŒããŒã³ãŒãããµãŒããŒããŒãžã®ã³ãŒããã¯ã©ã€ã¢ã³ãã³ãŒãããããŸã§ã®ãšãããå°ãªããšãäœããã®åœ¢ã§æé©åããæ¹æ³ãèŠã€ããŠããŸããã
- ã«ã¹ã¿ã ã«ã¯ãé€å»ã§ããªãäžå®éã®ã³ãŒããåžžã«ãããŸãã ããããæ°åã®ãããžã§ã¯ããå®è¡ããŠããå Žåãããæç¹ã§ãæœè±¡åã«ç§»åã§ããç¹°ãè¿ããã¿ãŒã³ãå¿ èŠã«ãªããŸãã ãããŠãããã¯ãªãŒãã³ãœãŒãããããããšãã§ããŸã;ïŒã æ£çŽãªãšãããããã¯Electrodeã§ãè¡ãããšãã§ãã圌ãèªèº«ãããã«æ¥ãããã«æããŸãã
éå§æã®åŠç¿æ²ç·ãé£ããå Žåãã«ã¹ã¿ãã€ãºã®é£ãããå°æ¥ã®ãµããŒã
ããŒã ã®äžéšãšããŠã¢ããªã±ãŒã·ã§ã³ã䜿çšãããšããŸãããã®å Žåãäœããã®æ¹æ³ã§ååãèšç·Žããå¿ èŠããããŸãã ããã¥ã¡ã³ããšåºå®ãã¿ãŒã³ã¯ãããŒã å ããã³ããŒã éã§ç¥èãç°¡åã«å ±æããããã®åªããåºç€ã§ãã
äœããã«ã¹ã¿ãã€ãºããæ©èœãå¿ èŠã§ãã ç§ãã¡ã¯çŸå®ã®ç掻ãå¶ãã§ããããã€ã§ãäœã§ãå€æŽã§ããŸããèŠä»¶ã¯æ°žé ã§ã¯ãããŸããã ãããŠãç§ã¯æ¬åœã«ãã¬ãŒã ã¯ãŒã¯ã®ããçš®ã®å³æ Œãªå¶éã«ééããããããŸããã
- Reactã¢ããªã®äœæã¯ãæåã¯æãç°¡åã«ç解ã§ããŸãããéåžžã¯å€æŽããæ段ãæäŸããŸããã ãã®ãœãŒã¹ã³ãŒãã¯éåžžã«å³ããããããã€ãžã§ã¯ãããè¡ãïŒã€ãŸããã¢ã»ã³ããªçšã®ãã¹ãŠã®ã¹ã¯ãªããããã¹ãŠã®æ§æãããã³ãã®ä»ã®ã¬ãããåé€ããïŒå Žåã¯ãã«ã¹ã¿ã ãåªå ããŠãã®æ¹åãçŽã¡ã«æŸæ£ããããšããå§ãããŸãã ããã±ãŒãžã«ã¯ãªã³ã¿ãŒãå«ãŸããŠããŸãã APIã¯ãŸã£ãããªããå¥çŽã®æ°ã¯æå°éãªã®ã§ãã¢ããã°ã¬ãŒãã¯ç°¡åã§ãã
- Next.jsã¯ããã€ãã®åŽé¢ãåŠçããŸãããããè¡ãæ¹æ³ãç解ããã«ã¯å°ãæéãããããŸãã ã»ãšãã©ã®åçŽãªã±ãŒã¹ã«ã¯äŸããããŸãããè€éãªãã®ãéæšæºã®ãã®ãå¿ èŠãªå Žåã¯ãèªåã§æ®åœ±ããæ¹ãç°¡åã§ãã³ãŒããæ··ä¹±ããå€ãã®äžå®å®ãªãµãŒãããŒãã£ã®ãœãªã¥ãŒã·ã§ã³ã§å³ä»ããããŸãã æŠããŠãåŽãžã®äžæ©ã¯çã¿ã§è ããããŸãã ãªã³ã¿ãŒã¯å«ãŸããŠããŸããã ã¢ããã°ã¬ãŒãæã®åæ§ã®ç¶æ³ãAPIã¯æå°éã§ãããèŠåã¯ç°¡åã§ãã
- Electrodeã¯é«åºŠãªèšå®ããŒã¹ã§ãããã»ãšãã©ã®ã¹ã¯ãªããã¯æåããéããŠãããããæåã¯ããããªã·ã§ãã¯ãåŒãèµ·ãããŸãããç解ãããšããã«äººçã¯ããã«æ¥œã«ãªããŸãã ãããã£ãŠãããè€éãªã±ãŒã¹ã§ã¯ãããé©åã«æºåã§ããŸãã æ®å¿µãªãããããªãã®éã®éè¡ããŸã ããŒãã®äžã§çºçããŠããããã決ããŠç°¡åã§ã¯ãããŸããã é©åã«èª¿æŽãããESLintãå«ãŸããŸãã ããã§ã¢ããã°ã¬ãŒããããšããã¹ãŠãæªåããŸãã çªãåºãŠããå èã®æ°ã¯éåžžã«å€ããããå°æ¥äœããå£ãå¯èœæ§ã倧ããã§ãã
- ã«ã¹ã¿ã ã§ã¯ãããªãã¯èªåã§ããŸãã ããªããããããã«ãããã¯ãããªããŸãã èªåã§ãã¹ããã©ã¯ãã£ã¹ãæ¢ããŠããã®ã§ãèªåã§è§£æ±ºçãéžæããŠããã®ã§ããããžã§ã¯ãã®æåããæåŸã®æ¥ãŸã§ã§ãã ã¢ããã°ã¬ãŒãã§ã¯ããã¹ãŠãäžè¬çã«éåžžã«æªãããã€ã§ãäœããå£ããå¯èœæ§ããããŸãã
åœéå
䟿å®äžãããŒã«ã©ã€ãºãããè¡ã¯ãé åãšåäœãå«ãæšæºåœ¢åŒã§ããå¿ èŠããããŸãã 翻蚳äŒç€Ÿãç°¡åã«ç解ã§ãããã®ãæãŸããã®ã¯ãã»ãšãã©ã®å Žåã翻蚳äŒç€Ÿãæ··ä¹±ããããã§ãã
æäŸããããã¬ãŒã ã¯ãŒã¯ã®ããããã翻蚳ã®ããã®æ段ãæäŸããŸããã ãã ããç°¡åã«è¿œå ã§ããŸãã æ€çŽ¢åŸãéäžåã®éåæããŒãããŒããŒãæé©ã«æ©èœããããšãããããŸããããã®å Žåãåèšèªã¯åå¥ã®ãã£ã³ã¯ã«ãªããŸãã ããã¯ãèšèªããã©ã¡ãŒã¿ãŒãšããŠåãåãããã®èšèªã®éåæã«èªã¿èŸŒãŸããè¡ãè¿ãé¢æ°ãäœæããããšã§å®çŸã§ããŸãã const loadStrings(lang) => import('./strings/'+lang)
ïŒãã®æ§é ã¯ããã«åäœããå¯èœæ§ã¯äœãããæ¬è³ªã¯æ確ã§ããå¿
èŠãããããã®åã«Webpackã³ã³ããã¹ããäœæããŠ1ã®æãä¿èšŒããããšãã§ããèšèª= 1ãã£ã³ã¯ã
ã©ã€ãã©ãªïŒ FormatJSããã³Format Message ïŒã©ã¡ããããããICU Formatã§åäœããŸã ïŒã
æååãããŒã¯ã³ã§æŽçããã®ãæåã§ããã€ãŸãã {TOKEN: {en: 'English', fr: 'French'}}
ããã¯ãéçºè
ãšç¿»èš³è
ã«ãšã£ãŠç°¡åã§ãã ãlike tokenããè±èªã®æååã§ããéã®ã¢ãããŒãã¯ãããèªäœãæ£åœåããŸããã§ããã
æ¯èŒ
èŠåŸ\åå | Reactã¢ã㪠| é»æ¥µ | Next.js | ã«ã¹ã¿ã |
---|---|---|---|---|
åçã«ãŒã | ã¯ã | ã¯ã | DIY | ã¯ã |
ãµãŒããŒã¬ã³ããªã³ã° | ãã | ã¯ã | ã¯ã | DIY |
SSRæé©å | SSRãªã | ã¯ã | ãã | DIY |
CSS | ã¯ã | ã¯ã | æªå€¢ | DIYç°¡å |
ããªããã»ããµ | æªå€¢ | æªå€¢ | æªå€¢ | DIYç°¡å |
éèŠãªCSS | DIY | ãã©ã°ã€ã³ | ãã | DIY |
ã³ãã¥ãã㣠| 倧ãã | ããã«ãã | ããã«ãã | ããªãèªèº«ã§ |
ãã¹ã | åè« | å¹» | DIY | DIY |
åºæ¬ã³ãŒã | ãŒã | ãããã | ãŒã | ããããã® |
æ§æ | ãŒã | ãããã | ãŒã | ããããã® |
ããã¥ã¡ã³ã | ããã | ãŸããŸã | åšåº«ãã | æ£åšãã |
ç°¡åãªåŠç¿ | 座ã£ãŠè¡ã£ã | 蚱容ã§ãã | ãããã | æªå€¢ |
ãããªããã¬ãŒãã³ã° | æ»ã«ããã | äžçæžåœ | äžçæžåœ | æªå€¢ |
ãµãŒããŒãšã³ãžã³ | nginx | ããŒã | ããŒã | ããŒã |
ã«ã¹ã¿ãã€ãº | è¿œãåºããŠæ»ã¬ | 蚱容ã§ãã | æªå€¢ | äœã§ã |
åæã€ã³ã¹ããŒã« | ãããã | å£é 㧠| ãããã | æªå€¢ |
äºæž¬å¯èœæ§ | ããã | ãŸããŸã | æªã | æªå€¢ |
ã¢ããã°ã¬ãŒã | ãŽãŒãžã£ã¹ | æªããªã | ãŸããŸã | æªå€¢ |
è©æ±º
ãµãŒããŒãµã€ãã¬ã³ããªã³ã°ãè¡ããªãå ŽåïŒäœã販売ããŠããããã¢ããªã±ãŒã·ã§ã³ã¯Googleã«ãã£ãŠã€ã³ããã¯ã¹ä»ããããŠããããäžè¬ã«ãã©ã€ããŒãã§ãïŒã Create React Appã«å®å šã«ç®ãåããããšãã§ããŸããããã¯æã人æ°ãããã·ã³ãã«ã§ãã å°ãã«ã¹ã¿ãã€ãºããããšãã§ããŸãã ãã ã€ãžã§ã¯ãããªãã§ãã ãããããã¯äŸ¡å€ããããŸããã
ãµãŒããŒã®ã¬ã³ããªã³ã°ãå¿ èŠã§ãããããã€ãã®å¶éããããŸãããæºåãã§ããŠããå Žåã¯ã é»æ¥µãéžæããŸãïŒæ¡ä»¶ãšããŠãå€æ°ã®ãã¡ã€ã«ãåé·æ§ãæ§æã«æãã£ãŠã¯ãããŸããïŒã ããã©ãŒãã³ã¹ãå¿é ãªå Žåã«ãé©ããŠããŸãã
ããã«å€§ããªå¶éã«èã ãããããªãºã ãæããæºåãã§ããŠããå Žåã¯ã Next.jsãã芧ãã ããã
ãããŠæåŸã«ãåžžã«ã«ã¹ã¿ã ããããŸãã 幞ããªããšã«ã Webpack Blocks ã React Serverã®äœæ ã React Router ã Reduxãªã©ã®ã©ã€ãã©ãªã¯éåžžã«ç°¡åã§ãã å¯äžã®åé¡ã¯ãæ¯ååãã³ãŒããç¹°ãè¿ããã«ã¢ããªã±ãŒã·ã§ã³ãè¿ éã«äœæããããã®ç¥èã®äº€æãšããã»ã¹ã®éçºã§ãã