- Reactã¯åœåãå°é家ãšæ©æå°å ¥è ã察象ãšããŠããŸããã
- Facebookã¯ãèªèº«ã䜿çšãã補åã®ãœãŒã¹ã³ãŒãã®ã¿ãéããŸããã€ãŸããFacebookæªæºã®ãããžã§ã¯ãã察象ãšããŠããŸããã
- å®å šã«ç°ãªãè€éãã®èšå€§ãªæ°ã®Reactã¬ã€ã
以äžãèªè ã¯ãã§ã«HTMLãCSSãããã³JavaScriptã«ç²ŸéããŠããããšãåæãšããŠããŸãã
ãªãç§ã«è³ãåŸããŸããïŒ
å€ãã®ççŸããReactã®ãã³ãããããŸãã ãªãç§ã«è³ãåŸããŸããïŒ
Reactãéçºããã³å ¬éããFacebookããŒã ã§åããŸããã ä»ã¯Facebookã§ã¯ãªãå°ããªã¹ã¿ãŒãã¢ããã§åããŠããã®ã§ãFacebookã§ã¯ãªãçŸåšã®ç«å Žã§è©±ãããšãã§ããŸãã
Reactãšã³ã·ã¹ãã ã«ã¢ãããŒãããæ¹æ³
ãã¹ãŠã®ãœãããŠã§ã¢ã¯ç¹å®ã®æè¡ã¹ã¿ãã¯ã«åºã¥ããŠæ§ç¯ãããŠãããã¢ããªã±ãŒã·ã§ã³ãäœæããã«ã¯ãã®ã¹ã¿ãã¯ãç解ããå¿ èŠããããŸãã Reactãšã³ã·ã¹ãã ãé åçã ãšæãããäž»ãªçç±ã¯ããããåžžã«ééã£ãé åºã§èª¬æãããŠããããã§ãã
2ã€ã®ããšã䞊è¡ããŠèŠéãããåŠç¿ãããããããšãªã ããã®é åºã§åŠç¿ããå¿ èŠããããŸãã
Reactã§çç£æ§ãäžããããã«ãã¹ãŠãå¿ èŠãšããããã§ã¯ãããŸããã åé¡ã解決ããå Žåã¯ã次ã®æé ã«é²ã¿ãŸãã
ãŸããReactã³ãã¥ããã£ã«ã¯ããè¶ è¿ä»£çãªãã©ã¯ãã£ã¹ãïŒãæå 端ãïŒã§ããããã€ãã®ãããã¯ããããŸãã ãããã®ãããã¯ã¯èå³æ·±ããã®ã§ãããç解ããã®ã¯é£ãããäžèšã®ãããã¯ã»ã©äººæ°ããªããã»ãšãã©ã®ã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã¯å¿ èŠãããŸããã
- ã€ã³ã©ã€ã³ã¹ã¿ã€ã«
- ãµãŒããŒåŽã®ã¬ã³ããªã³ã°
- Immutable.js
- ãªã¬ãŒããã¡ã«ã³ã«ãªã©
Reactèªäœã®åŠç¿
Reactã§äœæ¥ãéå§ããã«ã¯ã巚倧ãªããŒã«ããããå¿ èŠã§ãããšãã誀解ããããŸãã ããããããã¯ããã§ã¯ãããŸããã å ¬åŒããã¥ã¡ã³ãã«ã¯ã ã³ããŒã¢ã³ãããŒã¹ãHTMLãã³ãã¬ãŒãããããŸã ãããã¯ã
.html
ãã¡ã€ã«ã«ä¿åããŠããã«äœæ¥ãéå§ããã®ã«ååã§ãã ãã®ã¹ãããã«ã¯ããŒã«ã¯å¿ èŠãããŸãããReactã®åºæ¬ã«æ £ãããŸã§ããããåãäžããã¹ãã§ã¯ãããŸããã
ãŸããReactãåŠã¶æãç°¡åãªæ¹æ³ã¯ãå ¬åŒãã¥ãŒããªã¢ã«ã䜿çšããããšã§ãã
npm
åŠç¿
npm
ã¯Node.jsããã±ãŒãžãããŒãžã£ãŒã§ãããããã³ããšã³ãã®éçºè ãšãã¶ã€ããŒãJavaScriptã³ãŒããå ±æããæãäžè¬çãªæ¹æ³ã§ãã ã¢ãžã¥ã©ãŒ
CommonJS
ã·ã¹ãã ãå«ãŸããŠãããJavaScriptã§èšè¿°ãããã³ãã³ãã©ã€ã³ããŒã«ãã€ã³ã¹ããŒã«ã§ããŸãã
CommonJS
APIã®è©³çŽ°ã«ã€ããŠã¯ã ãã®èšäºãèªãã§ã
CommonJS
ãŸãã¯CommonJS Spec Wikiã䜿çšãããçç±ãšæ¹æ³ãç解ããŠãã ããã
Reactãšã³ã·ã¹ãã ã®ã»ãšãã©ã®ã³ã³ããŒãã³ããã©ã€ãã©ãªãããã³ããŒã«ã¯
CommonJS
ã¢ãžã¥ãŒã«ãšããŠå©çšå¯èœã§ããã
npm
ã䜿çšããŠã€ã³ã¹ããŒã«ãããŸãã
JavaScript Builderã®åŠç¿
ããã€ãã®æè¡çãªçç±ããã
CommonJS
ã¢ãžã¥ãŒã«ïŒã€ãŸã
npm
ïŒããã©ãŠã¶ãŒã§ãã€ãã£ãã«äœ¿çšããããšã¯ã§ããŸããã ãããã®ã¢ãžã¥ãŒã«ã
.js
ãã¡ã€ã«ã§äœæããã«ã¯ãJavaScriptã®ããã³ãã©ãŒããå¿ èŠã«ãªããŸããããã¯ã
<script>
ã䜿çšããŠããŒãžã«å«ããããšãã§ããŸãã
JavaScriptãã«ããŒã®äŸãšããŠã¯ã
webpack
ããã³
browserify
ãŸãã ã©ã¡ããè¯ãéžæã§ããã
webpack
ã¯å€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã®éçºãç°¡çŽ åããç¹å®ã®æ©èœã»ãããããããã
webpack
ã奜ã¿ãŸãã ããã¥ã¡ã³ãããããã«ããããã«èŠããããã ã¯ã€ãã¯ã¹ã¿ãŒããã³ãã¬ãŒã ãçšæã ãããè€éãªã±ãŒã¹çšã®ããŠããŒWebpackã¬ã€ããäœæããŸãã ã
èŠããŠãã䟡å€ããããŸã
CommonJS
ã¯
require()
é¢æ°ã䜿çšããŠã¢ãžã¥ãŒã«ãã€ã³ããŒããããããäžéšã®ãŠãŒã¶ãŒã¯ããã
require.js
ã©ã€ãã©ãªã«é¢é£ãããã®ã ãšèããããã«ãªããŸãã ããã€ãã®æè¡çãªçç±ããã
require.js
ãé¿ããããšããå§ãããŸãã ãã®éžæã¯ãReactç°å¢ã§ã¯äžè¬çã§ã¯ãããŸããã
ES6ã®åŠç¿
JSXïŒReactãã¥ãŒããªã¢ã«ã§åŠç¿ããŸããïŒã«å ããŠãäŸã®äžã«é¢çœãæ§ææ§æãããããšã«æ°ã¥ãããããããŸããã ããã¯ES6ãšåŒã°ããŸããããã¯ãJavaScriptã®ææ°ããŒãžã§ã³ã§ããããŸã æ £ããŠããªãå¯èœæ§ããããŸãã ç®æ°ããã®ããã«ãES6ã¯ãã©ãŠã¶ãŒã§ãŸã å®å šã«ã¯å©çšã§ããŸãããããã«ããŒã¯ç¹å®ã®æ§æåŸã«ãµããŒããããŠããJavaScriptã«å€æã§ããŸãã
Reactã§éçºããããã«ES6ãç¥ãå¿ èŠã¯ãããŸãã ãéäžã§åŠç¿ã§ããŸãã
ãŸããES6ã¯ã©ã¹ãReactã³ã³ããŒãã³ããæ§ç¯ããããã®å¥œãŸããæ¹æ³ã§ãããšãã話ãèããããããŸããã ããã§ã¯ãããŸããã ã»ãšãã©ã®äººïŒFacebookãå«ãïŒã¯
React.createClass()
䜿çšããŸãã
åŠç¿ã«ãŒãã£ã³ã°
ãã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ãïŒSPAïŒã¯ææ°ã®modã§ãã ãããã¯äžåºŠããŒããããWebããŒãžã§ããããŠãŒã¶ãŒããªã³ã¯ãŸãã¯ãã¿ã³ãã¯ãªãã¯ãããšãããŒãžã§å®è¡ãããŠããJavaScriptã¯ããŒãžå šäœããªããŒãããã«ã¢ãã¬ã¹ããŒãšã³ã³ãã³ããæŽæ°ããŸãã ã¢ãã¬ã¹ããŒã¯ã«ãŒã¿ãŒã«ãã£ãŠå¶åŸ¡ãããŸã ã
React åå¿ã«ãŒã¿ãŒãšã³ã·ã¹ãã ã§æã人æ°ã®ããã«ãŒã¿ãŒã åäžããŒãžã®ã¢ããªã±ãŒã·ã§ã³ãéçºããŠããå Žåã¯ãç¹ã«çç±ããªãéã䜿çšããŠãã ããã
åäžããŒãžã®ã¢ããªã±ãŒã·ã§ã³ãäœæããå Žåãé€ããã«ãŒã¿ãŒã䜿çšããªãã§ãã ãã ã ãšã«ãããã»ãšãã©ã®ãããžã§ã¯ãã¯ãæ¢åã®å€§ããªã¢ããªã±ãŒã·ã§ã³å ã®å°ããªã³ã³ããŒãã³ãããå§ãŸããŸãã
åŠç¿ãã©ãã¯ã¹
ãããããFluxã«ã€ããŠèããããšãããã§ãããã ãããã¯ãŒã¯ã«é¢ãã圌ã«ã€ããŠã®*å€ãã®èª€å ±ããããŸãã
å€ãã®äººã ãããŒã¿ã¢ãã«ã決å®ããããšããŠãããããã«ã¯ééããªãFluxã䜿çšããå¿ èŠããããšèããŠããŸãã ããã¯ãFluxããããžã§ã¯ãã«ãããã€ããééã£ãæ¹æ³ã§ãã ãã©ãã¯ã¹ã¯ãã»ãšãã©ã®ã³ã³ããŒãã³ããæ¢ã«äœæãããåŸã«ã®ã¿è¿œå ããå¿ èŠããããŸãã
Reactã³ã³ããŒãã³ãã¯éå±€æ§é ã«ãªã£ãŠããŸãã ã»ãšãã©ã®å ŽåãããŒã¿ã¢ãã«ããã®éå±€ã«åŸããŸãã ãããã®ç¶æ³ã§ã¯ãFluxã¯ããŸãå©ç¹ããããããŸããã ãã ããããŒã¿ã¢ãã«ãéå±€çã§ãªãå ŽåããããŸãã Reactã³ã³ããŒãã³ãããå€éšãã«èŠãã
props
ãååŸããå ŽåããŸãã¯éåžžã«è€éã«ãªãå§ããŠããã³ã³ããŒãã³ããå€æ°ããå Žåã¯ãFluxãã芧ãã ããã
Fluxãå¿ èŠã«ãªãææãç解ã§ããŸãã å¿ èŠãã©ããããããªãå Žåã¯ãå¿ èŠãããŸããã
Fluxã䜿çšããå Žåãæãäžè¬çã§ææžåãããŠããFluxã©ã€ãã©ãªã¯Reduxã§ãã *å€ã*ã®ä»£æ¿ããããŸããããããããªãã¯ããããè©ŠããŠã¿ãããšæãããŸãããç§ã®ã¢ããã€ã¹ã¯æã人æ°ã®ãããã®ã䜿çšããããšã§ãã
ã€ã³ã©ã€ã³ã¹ã¿ã€ã«ã®èª¿æ»
Pre-Reactã§ã¯ãã»ãšãã©ã®äººãCSS SASSããªããã»ããµã䜿çšããŠã¹ã¿ã€ã«ãåå©çšããŠããŸãã Reactã䜿çšãããšãåå©çšå¯èœãªã³ã³ããŒãã³ããç°¡åã«èšè¿°ã§ããã ãã§ãªããèšè¿°ã¹ã¿ã€ã«ãç°¡çŽ åã§ããŸãã ã³ãã¥ããã£ïŒç§ãå«ãïŒã®å€ãã¯ãCSSãå®å šã«åãé€ãããšãè©Šã¿ãŠããŸãã
ããã€ãã®çç±ãããããã¯æ¯èŒçæ£æ°ã§ãªãèãã§ãã ã¡ãã£ã¢ã¯ãšãªã®èšè¿°ãè€éã«ãªããããã©ãŒãã³ã¹ãå¶éãããå ŽåããããŸãã Reactã®äœ¿çšãéå§ããã°ããã®å Žåã¯ãæ £ããŠããCSSã¹ã¿ã€ã«ãèšè¿°ããŠãã ããã
Reactã®ä»çµã¿ãæãããããã«ãå¥ã®ææ³ãæ¢ããŠãã ããã 人æ°ã®ãããã®ã®1ã€ã¯BEMã§ãã Reactã¯ã¹ã¿ã€ã«ãåå©çšããããã®ããæè»ãªæ¹æ³ãæäŸãïŒã³ã³ããŒãã³ãã®åå©çšãéããŠïŒãJavaScriptãã«ããŒãããå¹ççãªã¹ã¿ã€ã«ã·ãŒããçæã§ãããããCSSããªããã»ããµãåãé€ãããšããå§ãããŸãïŒ OSCONããã®ãããã¯ã«ã€ããŠè©±ããŸãïŒã ãã ããReactã¯ä»ã®JavaScriptã©ã€ãã©ãªãšåæ§ã«ãCSSããªããã»ããµãŒã§ãåæ§ã«æ©èœããŸãã
ãµãŒããŒåŽã¬ã³ããªã³ã°ã®åŠç¿
ãµãŒããŒã¬ã³ããªã³ã°ã¯ãããŠãããŒãµã«ããŸãã¯ãå圢ãJSãšåŒã°ããããšããããããŸãã ããã¯ãReactã³ã³ããŒãã³ãããµãŒããŒäžã®éçHTMLã«ã¬ã³ããªã³ã°ã§ããããšãæå³ããŸãã ããã«ããããŠãŒã¶ãŒã¯UIã衚瀺ããããã«ãã¹ãŠã®JSãããŠã³ããŒãããããŸã§åŸ ã€å¿ èŠããªããªããReactã¯ã¯ã©ã€ã¢ã³ãã§äœãã¬ã³ããªã³ã°ããã«ãµãŒããŒã§çæãããHTMLãåå©çšã§ãããããããŒãžã®åæèªã¿èŸŒã¿ãé«éåãããŸãã
ãã©ã€ããªããŒãžã®ã¬ã³ããªã³ã°ãé ãããå ŽåããŸãã¯æ€çŽ¢ãšã³ãžã³ã®ã©ã³ãã³ã°ãæ¹åããå Žåã¯ããµãŒããŒåŽã®ã¬ã³ããªã³ã°ãå¿ èŠã«ãªããŸãã ã¯ããGoogleã¯ã¯ã©ã€ã¢ã³ãã§ã¬ã³ããªã³ã°ãããã³ã³ãã³ãã®ã€ã³ããã¯ã¹ãäœæããŸããã2016幎1æã®æç¹ã§ãåãã£ã¡ã³ã·ã§ã³ã¯ãã¬ã³ããªã³ã°ããã©ãŒãã³ã¹ã®ããã«ããããã©ã³ãã³ã°ã«æªåœ±é¿ãäžããããšã瀺ããŸããã
ãŸãããµãŒããŒã¬ã³ããªã³ã°ã«ã¯ããæ£ãããå®è£ ã®ããã«å€æ°ã®ããŒã«ãå¿ èŠã§ãã ãµãŒããŒã¬ã³ããªã³ã°ãèæ ®ããã«èšè¿°ãããReactã³ã³ããŒãã³ãã®ãµããŒãã¯äžè¬ã«ééçã§ãããããæåã«ã¢ããªã±ãŒã·ã§ã³ãèšè¿°ããŠããèããããšããå§ãããŸãã ã¢ããã°ã¬ãŒãããå Žåããã¹ãŠã®ã³ã³ããŒãã³ããæžãæããå¿ èŠã¯ãããŸããã
Immutable.jsã®åŠç¿
Immutable.jsã¯ãReactã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ããã©ãŒãã³ã¹åé¡ã®è§£æ±ºã«åœ¹ç«ã€äžé£ã®ããŒã¿æ§é ãæäŸããŸãã ããã¯åªããã©ã€ãã©ãªã§ãããã¢ããªã±ãŒã·ã§ã³ã®æé·ã«åãããŠé »ç¹ã«äœ¿çšããŸãããããã©ãŒãã³ã¹ã®åé¡ãçºçãããŸã§ã¯çµ¶å¯Ÿã«å¿ èŠã§ã¯ãããŸããã
åŠç¿ãªã¬ãŒããã¡ã«ã³ã«ãªã©
ãããã®ãã¯ãããžãŒã¯ãAJAXãªã¯ãšã¹ãã®æ°ãæžããã®ã«åœ¹ç«ã¡ãŸãã ãããã¯ãŸã æ¯èŒçå®éšçã§ãããããããŸãã«ãå€ãã®AJAXãªã¯ãšã¹ãã§åé¡ããªããã°ãRelayãFalcorã¯å¿ èŠãããŸããã
UPDã æåã®æ®µèœã®ç¿»èš³ã¯ãããã«ãããã«ãªããŸãããç·šéã®ããã«vtambourineã«æè¬ããŸã
UPD2ã å€ãã®å°ããªææ³ä¿®æ£ã wiygnã«æè¬