ãããŠãç§ã®æåã®
æ©èœã®ã»ããã¯æ§ããã«èãããŸãã ãããããããç解ããããã«ãç§ã¯æ°æ©ãéããããã¯ãããžãŒåç©åå šäœã«ã€ããŠèªãå¿ èŠããããŸããã ãããŠããã®ãããžã§ã¯ãã«ã¯åŠã¶ã¹ãããšããããããããŸãã
ãã¯ãããžãŒ
䜿çšãããŠãããã¯ãããžãŒã®æ§ãããªãªã¹ãããããžã§ã¯ããªããžããªã«ãããŸã ïŒ
- AngularJs-ããžãã¯ãHTMLã«åã蟌ãããšãã§ããããã³ããšã³ããã¬ãŒã ã¯ãŒã¯ïŒã¯ããæåïŒ;
- Ace Editor-ããã¹ããšãã£ã¿ãŒã
- ããŒã¯æžã¿ -ããŒãµãŒããã³ã³ã³ãã€ã©ãŒMarkdownã
- Twitter Bootstrap- ãããã¯èšã£ãã
- Node.js-ããã¯ãšã³ãã®ãžã§ããjsã
- Express -Node.jsã®Webãã¬ãŒã ã¯ãŒã¯ã
- Gulp-ããã³ããšã³ãã®ã¹ããªãŒã ã¢ã»ã³ããªã·ã¹ãã ã
- Keymaster.js-ãããããŒãåŠçããããã®ã©ã€ãã©ãªã
- jQuery-ããŠããããªãã§ã©ãã«ïŒ
èªåãããããã«2ã€è¿œå ã§ããŸãã
- Docker-ã³ã³ãããŒïŒèª°ãã話ããŠããïŒ;
- Docker Compose-ã³ã³ããããããã§èµ·åããããã®ããŒã«ã
- Ansible-æ§æ管çãèªååããããã®ããŒã«ã
- Heroku-ã¯ã©ãŠãã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã
- N |å ç¢-Node.Jsã§ã®ç£èŠããããã·ããªãŒã±ã¹ãã¬ãŒã·ã§ã³ãããã³ã¢ããªã±ãŒã·ã§ã³ç®¡çã
- NGinx -httpããã³ãããã·ãµãŒããŒïŒãã®ãããžã§ã¯ãïŒã
- Npm -Node.jsã®ããã±ãŒãžãããŒãžã£ãŒã
- Webpack-ããã³ããšã³ãã®JSãã¡ã€ã«ã®ã³ã¬ã¯ã¿ãŒã
- Karma-ãã¹ãã©ã³ããŒã
- Ejs-ãã³ãã¬ãŒãã®ãšã³ãžã³ã
ãã®ãããªæè¡åç©åã¯ãæ§ããã«èšã£ãŠãé©ããã ãããã®ãã¹ãŠã®ãã¡ãAngularJsãBootstrapãããã³Jqueryã®ã¿ã䜿çšããŸããã ãã¡ãããã»ãšãã©ã®ãã¯ãããžãŒã«ã€ããŠèããããšããããŸããããã¹ãŠã¯åã«éå®ãããŠããŸããã
ã€ã³ãã©
ãã¯ãããžãŒã®ãªã¹ããèŠãŠãããšããçåã¯ç§ãæ©ãŸããŠããŸããïŒãç§ã®ãã©ãŠã¶ãŒã§åäœããããã¹ããšãã£ã¿ãŒã«ããã¯ãšã³ããããã®ã¯ãªãã§ããïŒã ããã«ããã®å ŽåãNode.jsã管çããããã«Dockerãšãšã³ã¿ãŒãã©ã€ãºãã©ãããã©ãŒã ãå¿ èŠã ã£ãçç±ã¯æããã§ã¯ãããŸããã§ããã ããããç§ã¯ã¢ããªã±ãŒã·ã§ã³ã®äœæè ã«ã€ããŠããå€ããåŠã³ã2çªç®ã®è³ªåã¯ããèªäœã§æ±ºå®ãããŸããã Joe McCannã¯ã N | Solid ïŒNode.jsã¢ããªã±ãŒã·ã§ã³ã管çããã³ç£èŠããããã®ãã¬ãŒã ã¯ãŒã¯ïŒããªãªãŒã¹ããäŒç€Ÿã§ããNodeSourceã®å ±åèšç«è ã§ãã ããã¯ãã¢ããªã±ãŒã·ã§ã³ã€ã³ãã©ã¹ãã©ã¯ãã£ã®äœæã«ç²ŸéããŠããããšãæå³ãããã®åéã§ã¯å€ãã®ããšãåŠã¶å¿ èŠããããŸãã
ã¢ããªã±ãŒã·ã§ã³ãèµ·åããããšã¯å¯èœã§ããïŒ
ã¢ããªã±ãŒã·ã§ã³ããã¹ãããã ãã®å Žåã¯ãç°¡åãªãªãã·ã§ã³ãéžæã§ããŸãã Node.jsãšGulpã®ã¿ãå¿ èŠã§ãã Node.jsã¯ã Express WebãµãŒããŒãæã¡äžããŠæ§æããŸãã ãŸããGulpã¯Jsãã¡ã€ã«ãšSassãã¡ã€ã«ã®å€æŽãç£èŠãããã©ãŠã¶ãŒãç解ã§ãããã¥ãŒã«å€æãããã¡ã€ã«ã®ãããããå€æŽãããå Žåã«ããŒãžããªããŒãããŸãã READMEã«ã¯ããµãŒããŒã®ã€ã³ã¹ããŒã«ãšèµ·åã«é¢ããã¬ã€ãããããŸãã
Node.jsã®èšå®ã¯app.jsãã¡ã€ã«ã«ãããŸãã ãã®ãã¡ã€ã«ã§ã¯ãå€éšäŸåé¢ä¿ãšå éšã¢ãžã¥ãŒã«ãæ¥ç¶ããïŒã¡ã€ã³ããŒãžãèšå®ããã©ã°ã€ã³ã®ã«ãŒãã£ã³ã°ïŒãWebãµãŒããŒãæ§æãããŸãã éçããŒãžãæäŸããejsãã³ãã¬ãŒããã³ã³ãã€ã«ããCookieããŠãŒã¶ãŒã«ãã€ã³ãããhttpå¿çãå§çž®ãããã®ã³ã°ãæ§æããåçãªã¯ãšã¹ãã®ãã³ãã©ãŒãèŠã€ããŸãã
Gulpã®ã¹ã¯ãªããã¯/ gulpãã©ã«ããŒã«ãããŸãã ããã§ã¯ã¿ã¹ã¯ãäž»ãªé¢å¿äºã§ããåã«ååã§ãGulpããã®ãããžã§ã¯ãã§äœ¿çšãããçç±ãç解ã§ããŸãïŒwatchãbuildãwebpackãsassãbrowserSyncã ãŸãã¯ãã·ã¢èªïŒç£èŠãããã¡ã€ã«ãGulpã«æ瀺ããŸãã ãããã®ãããããæŽæ°ããããšã Webpackã䜿çšããŠãäŸåé¢ä¿ãšJsã³ãŒãã®æçããã¹ã¯ãªãããã³ã³ãã€ã«ããSassãCssã«å€æããŸãã 次ã«ããã©ãŠã¶ã«browserSyncã䜿çšããŠããŒãžãæŽæ°ããããã«èŠæ±ããŸãã
ãŸãããããã®ãã¡ã€ã«ã§ã¯ãã³ãŒãå®è¡ã®ããŸããŸãªãããã¡ã€ã«ïŒéçºã¢ãŒããšå®åã¢ãŒãïŒãèŠã€ããããšãã§ããŸãããéçºã¢ãŒãã§ã¯ããå€ãã®ãããã°æ å ±ïŒçž®å°ãã¡ã€ã«ããã°ãªã©ã®ãããã³ã°ïŒããããŸãã
ã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã«è»¢éããæ¹æ³ã¯ïŒ
ããããã¢ããªã±ãŒã·ã§ã³ã®ããŒã«ã«ã§ã®éçºãšãã¹ããå®äºããããããããµãŒããŒã«è»¢éãããšããçåãçããŸãã ãã¡ãããæãç°¡åãªãªãã·ã§ã³ã¯ããã¹ãŠãå®è¡ããå¿ èŠãªãŠãŒãã£ãªãã£ããã¹ãŠãªã¢ãŒãã³ã³ãã¥ãŒã¿ãŒã«ã€ã³ã¹ããŒã«ããããŒã«ã«ãã·ã³ãšåãããã«æ§æãããŠããããšã確èªããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠãäœãå€ãããªããšä¿¡ããããšã§ãã ãã ããç°å¢ãæ£ããæ§æãããäœãå€ãããªãããšã確èªããã«ã¯ãäœããã®æ¹æ³ã§ã¢ããªã±ãŒã·ã§ã³ãåé¢ããå¿ èŠããããŸãã äž»ã«2ã€ã®æ¹æ³ããããŸããä»®æ³ãã·ã³ãšã³ã³ããã§ãã ãããŠããã¡ãããJS =ã§æžããå Žåãæµè¡ã«ææãªãã¯ãããžãŒããã¹ãŠåéããªãã®ã¯çœªã§ãããããŠãDockerã«å¯Ÿããéžæã¯æããã§ãã
ã³ã³ãããŒã®Dockeræ§æã«ã¯ãè¶ èªç¶çãªãã®ã¯äœããããŸããã Node.Jsããã³å¿ èŠãªãã¹ãŠã®ãŠãŒãã£ãªãã£ãã€ã³ã¹ããŒã«ãããŠããã€ã¡ãŒãžã¯ãããŒã¹ã³ã³ãããšããŠäœ¿çšãããŸãã ã¹ã¯ãªããã«ã¯ãäŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ãšãµãŒããŒã®èµ·åã«é¢ããæ瀺ãå«ãŸããŠãããããŒã80ãæå®ãããŠãããç°å¢å€æ°ã瀺ãããŠããŸãã
ãããããªãDockerãªã®ã§ããããïŒ
ãã®ãããžã§ã¯ãã§Dockerã䜿çšããçç±ã¯ããã¡ãã·ã§ã³ã ãã§ã¯ãããŸããã æ¢ã«è¿°ã¹ãããã«ããããžã§ã¯ãã®äœæè ã¯ãNode.Jsäžã®ã¢ããªã±ãŒã·ã§ã³çšã®ãšã³ã¿ãŒãã©ã€ãºãã©ãããã©ãŒã ã§ããN | Solidã®äœæã«äœããã®åœ¢ã§é¢äžããŠããŸãã æåŸã®æ®µèœã§ã¯èšåããŸããã§ããããN |ãœãªããç»åã¯åºæ¬ç»åãšããŠäœ¿çšãããã ãã§ããããããã©ã®ãããªå©ç¹ããããããã¯ãŸã æ確ã§ã¯ãããŸããã ããããã«ãŒãã«ã¯ããã«2ã€ã®çããããã¡ã€ã«ããããŸãïŒ nsolid.ymlãšdocker -compose.ymlã§ãã
ããã2ã€ã®ãã¡ã€ã«ã¯ã Docker ComposeãŠãŒãã£ãªãã£ãæ§æããããã«å¿ èŠã§ãã ãã®ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ã¹ã¿ãŒã¢ãŒãã§èµ·åããN | Solidãã©ãããã©ãŒã ãæ§æããæ¹æ³ã«ã€ããŠèª¬æããŸãã ãã¹ãŠã®ã³ã³ããã1ã€ã®ãããã¯ãŒã¯ã§äžæãããã®çµæã8ã€ã®ã³ã³ãããéå§ãããŸãã
- N |ãœãªãããµãŒãã¹ã¬ãžã¹ããªïŒã€ã³ãã©ã¹ãã©ã¯ãã£ã«åå ããŠããã¢ããªã±ãŒã·ã§ã³ãç»é²ïŒã
- N |ãœãªãããããã·ïŒService Registryã«åºã¥ããã¢ããªã±ãŒã·ã§ã³éã§ãªã¯ãšã¹ããåæ£ããŸãïŒã
- N |ãœãªããã³ã³ãœãŒã«ïŒã¢ããªã±ãŒã·ã§ã³ç®¡çããŒã«ïŒã
- 4 Dillingerã³ã³ããïŒã¹ããŒãã¬ã¹ããµãŒãã¹ã¬ãžã¹ããªã«ç»é²ãããŠãããèŠæ±ãåãå ¥ããæºåãã§ããŠããïŒã
- NGinxïŒNode.JSã§ã¯ãªãWebãµãŒããŒïŒã
ãªããžããªã¯NGinxã®èšå®ãå¿ããŸããã§ãã ã ãããã·ãšããŠäœ¿çšãããŸãã Express.jsã®ãããªNGinxã¯ãããŒã¿ãå§çž®ããéçãã¡ã€ã«ãéä¿¡ããŸãã 圌ã¯éçãã¡ã€ã«ãžã®èŠæ±ãåå¥ã«åŠçããã¯ã©ã¹ã¿ãŒããŒãéã§ä»ã®èŠæ±ããããã·ããŸãã ãªããžããªã«ã¯2ã€ã®ãããã·å®è£ ïŒN | Solid ProxyãšNGinxïŒããããããã©ã«ãã§NGinxã䜿çšãããŠããããšãããããŸãã éçãã¡ã€ã«ã¯ãExpress.jsãµãŒããŒçµç±ãŸãã¯NGinxã®äœ¿çšãšãã2ã€ã®æ¹æ³ã§éä¿¡ããããšãã§ããŸãã ãããã®æ¹æ³ã¯äž¡æ¹ãšã䜿çšãããŸãã1ã€ç®ã¯ããŒã«ã«éçºã®å Žåã2ã€ç®ã¯ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ã¹ã¿ãŒã¢ãŒãã§å®è¡ããNGinxããµãŒããŒãšããŠäœ¿çšããå Žåã§ãã
Service RegistryãProxyãããã³Consoleã®æ©èœã¯ãã®æ§æã§ã¯äœ¿çšãããªããããåã«ç®ãéããŠãå³ã®ãããã·èŠæ±ã®ã¿ãæ€èšããŸãã ãããŠãäžè¬ã«ãç§ã¯ãã®ãããžã§ã¯ãã§N | Solidã®éèŠæ§ãæããŠããŸããã§ãããã»ãšãã©ã®æ©èœã¯NGinxã䜿çšããŠåäœæã§ããŸãããããã管çã®å©äŸ¿æ§ã«é¢ãããã®ã§ããã圌ã®æã«ã¯å±ããŸããã§ããã
ãããªãèªåå
ããããèªååã¯ããã§çµãããŸãã=ïŒã«ãŒãã«ã¯ããã«2ã€ã®èå³æ·±ããã¡ã€ã«ããããŸãïŒ deploy.ymlãšdillinger.serviceã§ãã ãŸããã€ã³ãã©ã¹ãã©ã¯ãã£ã®äœæã«ãé¢é£ä»ããããŠããŸãã
æåã®ãã®ã¯Ansibleã®ã¹ã¯ãªããã§ãã Debianã§ã®ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ãèªååããŸãã å ·äœçã«ã¯ãè¿œå ã®ã«ããæ¥ç¶ããrsyncãšdockerãã€ã³ã¹ããŒã«ããDillingerã€ã¡ãŒãžãã€ã³ã¹ããŒã«ãããã®ã€ã¡ãŒãžã§DebianãµãŒãã¹ãäœæããŠå®è¡ããŸãã
2çªç®ã®ãã¡ã€ã«ã§ã¯ããã®ãµãŒãã¹ã«ã€ããŠèª¬æããŠããŸãã 圌ã¯ãDillingerãdockerã«äŸåããŠããããšãè€æ°ã®ãŠãŒã¶ãŒããµãŒãã¹ãå©çšã§ããããšãããã³ãµãŒãã¹ãéå§ããåã«æ¯åæ°ããããŒãžã§ã³ã®ã€ã¡ãŒãžãããŠã³ããŒãããå¿ èŠãããããšã説æããŠããŸãã
確ãã«ããã®ã¹ã¯ãªããã¯ã¯ã©ã¹ã¿ãŒå šäœã§ã¯ãªã1ã€ã®ãã£ãªã³ãžã£ãŒã€ã¡ãŒãžã®ã¿ãçæããŸãããæèã®æµãã¯æ確ã§ãããã¯ã©ã¹ã¿ãŒå šäœãå®è¡ããããã«ãã®ã¹ã¯ãªãããæ¹è¯ã§ããŸãã
ããã³ããšã³ã
AngularJsã®æåã®ããŒãžã§ã³ã®éèŠãªã¢ãããŒãã®1ã€ã¯ãäž¡é¢ãã€ã³ãã£ã³ã°ã§ãã ããžãã¯ã®äžéšãHTMLã§çŽæ¥èšè¿°ããããšãã§ãããã®æ©èœã¯ãã®ãããžã§ã¯ãã§ç©æ¥µçã«äœ¿çšãããŠããŸãã ã³ãŒãã¯JSãã¡ã€ã«ãšejsãã³ãã¬ãŒãã®éã§ãŒãããŠããããšãå€æããŸãããããããžã§ã¯ãã¯å°ãããå šäœåã念é ã«çœ®ãããšãã§ããŸãã
ãã¿ãŒã³
Ejsãã³ãã¬ãŒããšã³ãžã³ã䜿çšããŠHTMLãèšè¿°ããŸããã ãã®çµæããã¡ã€ã«ã¯å°ãããŠèªã¿ãããããšãå€æããŸããã ãã¹ãŠã®ãã³ãã¬ãŒãã¯ã / viewãã©ã«ããŒã§è¡šç€ºã§ããŸãã ãã ããè¡ã®ãã¹ãŠã®ãã¡ã€ã«ã®èªã¿åããéå§ãããšãéåžžã®HTMLã«ã¯ãªãã¿ã°ãããšãã°ããã¡ã€ã«/ views / dropdowns / settingsã®switchã¿ã°ã衚瀺ãããŸã ã ããã¯AngularJsã䜿çšããŠèšè¿°ããããã£ã¬ã¯ãã£ãã§ãããããã€ãã®ããžãã¯ãé¢é£ä»ããããŠããŸããããã¯è§åºŠã䜿çšããè¯ãæ¹æ³ã§ãããã®å Žåãã³ãŒãã¯ããèªã¿ããããç解ãããããªããŸããã ãã ãããã£ã¬ã¯ãã£ããé »ç¹ã«äœ¿çšããå Žåã¯ãåãµã€ãã§ç¬èªã®ãã¡ã€ã³åºæèšèªïŒDSLïŒãåŠç¿ããå¿ èŠããããŸãã ããããã³ãŒãã®åºçŸã«ããããã³ãã¬ãŒãã¯èªã¿ã«ãããªããŸããããšãã°ã / views / sidebar.ejsãã¡ã€ã«ã§ã¯ããã®ã³ã³ããã¹ãã§ã®ããã¥ã¡ã³ãã®æå³ãšãæ®ãã®ããã¥ã¡ã³ãã®ã¿ãåé€ã§ããªãçç±ãç解ããå¿ èŠããããŸãã
ãã³ãã¬ãŒãã«ã¯ãéçºã¢ãŒããšæ¬çªã¢ãŒãçšã®ã¹ã¯ãªãããåé¢ãããŠããŸãã/views/footer.ejsãã¡ã€ã«ã§ã¯ãéåæã¹ã¯ãªããã®èªã¿èŸŒã¿ãšGoogleã¢ããªãã£ã¯ã¹ãæå¹ã«ãªã£ãŠããŸãã
Angularjs
ãã§ã«AngularJsã«è§ŠããŠããããã®ãããžã§ã¯ãã§ã©ã®ããã«ããªã䜿çšãããŠããã®ããããã«è©³ããç解ãããšããæ¥ãŸããã 誰ããAngularJsã«æ £ããŠããªãå Žåã¯ããããSpring for Javaãªã©ã®ãã¬ãŒã ã¯ãŒã¯å šäœã§ããããšãèšåãã䟡å€ããããŸãã ã€ãŸããè£å©é¢æ°ã ãã§ãªãããããšãšãã«äœ¿çšããå¿ èŠãããããã°ã©ãã³ã°ææ³ãå«ãŸããŠããŸãïŒäŸåæ§æ³šå ¥ïŒè§åºŠã³ã³ããŒãã³ããäœæãããšãã®äŸåé¢ä¿ã®èª¬æïŒãã¢ãžã¥ãŒã«æ§ïŒå€æ°ã®å¯èŠæ§ãåé¢ã§ããããã°ã©ãã³ã°ãã¿ãŒã³ïŒãåæ¹åãã€ã³ããŒïŒå€æ°ãå€æŽããããšãç»é¢äžã®ã³ã³ããŒãã³ããå€æŽãããç»é¢äžã®ã³ã³ããŒãã³ããå€æŽããããšïŒããã¹ãå ¥åããã§ãã¯ããã¯ã¹éžæãªã©ïŒãå€æ°ã®ç¶æ ãå€æŽãããŸãã 詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ïŒãã¿ãã¬ãã芧ãã ããïŒã
ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¯ã / public / jsãã©ã«ããŒã«ãããŸãã ãã¡ã€ã«/public/js/app.jsã«ã¯ãäŸåé¢ä¿ã Angularã®ã¡ã€ã³ã¢ãžã¥ãŒã«ãããŠã³ããŒãã«é¢ããããŽãšçœ²åä»ãã®èµ·åç»é¢ãèšè¿°ãããŠããŸãã
ãµãŒãã¹
ãã¹ãŠã®ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ããžãã¯ã¯ã / public / js / servicesãã©ã«ããŒã«ãããŸãã
é¢æ°debounce ïŒåãã³ãã³ããæããããã§ã³ãŒãã1åã ãå®è¡ã§ããåçŽãªã¯ãšãªãã£ã«ã¿ãŒïŒã«ã€ããŠèª¬æããŸãã ãããŠã³ã¹ã¯jsã®ããã°ã©ãã³ã°ãã¿ãŒã³ã§ããããšãã°ãäœãèããã«ããã¹ããå€æŽãããšãã«ä¿åæ©èœãåŒã³åºããïŒããŒãæŒããã³ã«ïŒé »ç¹ã«åäœããªãããšã確èªããããã«äœ¿çšãããŸãã çŸåšããã®é¢æ°ã¯éåžžã«åçŽã«æ©èœããæåŸã®é¢æ°åŒã³åºãã®å°ãåŸã«ã³ãã³ããåŒã³åºããŸãã ãŠãŒã¶ãŒãããã¹ããå°å·ããŠèª€ã£ãŠã¿ããéãããããŒãžããªããŒãããããããšã圌ã®è²Žéãªäœæ¥ããã¹ãŠæ¶ããŠããŸãå¯èœæ§ããããŸãïŒãã®ãã°ã«é¥ã£ãããšããããŸãïŒã
ãŸãã ããã¥ã¡ã³ãã¹ãã¬ãŒãžãµãŒãã¹ãšãŠãŒã¶ãŒãããŸã ã ãã©ãŠã¶ã®ããŒã«ã«ã¡ã¢ãªã«æ å ±ãä¿åããåæåäžã«èªã¿åããŸãã å¥åŠãªããšã«ãããã¥ã¡ã³ããµãŒãã¹ã¯ããã¥ã¡ã³ããã€ãŸããå ¥åããããã¥ã¡ã³ãã®ããã¹ããååãããã³ãã®ä»ã®ã¡ã¿ããŒã¿ãä¿åããŸãã ãããŠããŠãŒã¶ãŒãµãŒãã¹ã¯èšå®ãä¿åããŸãã
ãŸãããã®ãã©ã«ããŒã«ã¯ã wordscountãšnotification serviceã® 2ã€ã®ãµãŒãã¹ããããŸã ã æåã®ãµãŒãã¹ã§ã¯ãã¹ãŠãæ確ã§ãç°¡åã§ãã 2çªç®ã®ãµãŒãã¹ã®ã³ãŒãã®éã¯æãããå ŽåããããŸããããã¹ãŠãéåžžã«åçŽã§ããããã¯ããŠãŒã¶ãŒã«ãããã¢ãããŠã£ã³ããŠã衚瀺ã§ããæ©èœã説æããŠããŸãã ã³ãŒãã®äž»èŠéšåã¯ãéç¥ã®çžå¯Ÿäœçœ®ãèšç®ããããããé çªã«è¡šç€ºãããŠã£ã³ããŠã®ã¯ããŒãºãåŠçããŸãã htmlãã¡ã€ã«ã¯éç¥ãã³ãã¬ãŒããšããŠäœ¿çšãããããŽãšã¡ãã»ãŒãžããã®äžã«è¡šç€ºãããŸãã
ã³ã³ãããŒã©ãŒ
ã³ã³ãããŒã©ã䜿çšãããšãããã«ç°¡åã«ãªããŸãã ãããã¯ãejsãã³ãã¬ãŒãã§èª¬æãããŠããã€ãã³ããåŠçããŸãã ããšãã°ã ãŠãŒã¶ãŒã³ã³ãããŒã©ãŒã¯ããããããŠã³ã¡ãã¥ãŒã®ãã¿ã³ã®ã¯ãªãã¯ãåŠçãã ããã¥ã¡ã³ãã³ã³ãããŒã©ãŒã¯å·ŠåŽã®ã¡ãã¥ãŒã®ã€ãã³ããåŠçããæ°ãããã¡ã€ã«ãäœæããŠèªåä¿åããŸãã
ãŸãã ãã¡ã€ã«ãšã¯ã¹ããŒãã³ã³ãããŒã©ãŒããããã¡ã€ã³ããŒãžã®ãã©ãŒã ã䜿çšããŠãã¡ã€ã«ãã¢ããããŒãããŸãã ãããŠãMarkdownãã¬ã³ããªã³ã°ããããã®ã³ã¢ãã©ã°ã€ã³ã§ãµãŒããŒã«éãããŸãã
ã³ã³ãããŒã©ãŒã¯ãããã¹ããšãã£ã¿ãŒèªäœãæ§æããŸãã æ®å¿µãªããšã«ãããã¹ããšãã£ã¿èªäœã«ã€ããŠã¯ã»ãšãã©æžãããŠããŸããã äž»ãªæ©èœã¯Ace Editorã«å§ä»»ãããç§ãèŠã€ããã®ã¯ããŒããšããã¹ããšãã£ã¿ãŒã®æ§æã 2åã ã ã§ãã ïŒã³ãŒãã®éè€ã®ããããã°ããããããããŸããïŒã
æ什
ejsãã³ãã¬ãŒãã«ã€ããŠèª¬æãããšãã«ããã§ã«ãã£ã¬ã¯ãã£ãã«ã€ããŠèšåããŸããã ãã£ã¬ã¯ãã£ãã¯ãç¬èªã®ããžãã¯ãæã€ä»»æã®htmlèŠçŽ ãŸãã¯å±æ§ã§ãã ãããžã§ã¯ãã«ã¯ãããã®å€ãããããŸããã詳现ã«ã€ããŠã¯èª¬æããŸãããéåžžã«ã·ã³ãã«ã§ãèå³ã®ãã人ã¯/ public / js / componentsãã©ã«ããŒããããžã§ã¯ãã®ä»ã®ã³ãŒããŒã§ããããæ¢ãããšãã§ããŸãã
ããã¯ãšã³ã
ããã¯ãšã³ãã«ã€ããŠã¯ããŸã説æããŸããã ãã®ãããžã§ã¯ãã§åœŒã«äŒããŠé©ããã ãããžã§ã¯ãã®ããã¯ãšã³ãã¯ãã©ã°ã€ã³ãšããŠå®è£ ããã / pluginsãã©ã«ããŒã«ãããŸãã ãã®äžã«ã¯ãMarkdownãPDFãHtmlãMarkdownã«ã¬ã³ããªã³ã°ããã³ã¢ãã©ã°ã€ã³ããããŸãã ãŸããå€éšãµãŒãã¹ãšçµ±åããããã®4ã€ã®ãã©ã°ã€ã³ã¯ãããããããã³ããšã³ãã®å¯Ÿå¿ãããã©ã°ã€ã³ãšäœµããŠèªãã®ãçã«ããªã£ãŠããŸãã ãããã¯ãæ¿èªãåŠçãããã©ãŒã ãã¬ã³ããªã³ã°ãããŠãŒã¶ãŒããè¿œå æ å ±ãåéããåãªãã¢ããã¿ãŒã§ãã ã ãããã¢ããã¥ã¢ã®ããã«èªãã§ã誰ãããããé¢çœããšæã£ãããç§ã¯æ¢ããŸããã
ãã®ãããžã§ã¯ãã«ã€ããŠã¯ããããååã§ãããã ä»æ¥ãã€ã³ãã©ã¹ãã©ã¯ãã£ãããã³ããšã³ããããã¯ãšã³ããå«ãNode.jsäžã®åçŽãªã¢ããªã±ãŒã·ã§ã³ã®ã¢ãŒããã¯ãã£ãèŠã€ããŸããã ããªããäœãæ°ããããšãåŠã³ããã®ãããžã§ã¯ããã©ã®ããã«æ©èœããããæããã«ãªããããããããªãèªèº«ãããè¯ãããããã®ããæ確ãªããžã§ã³ãçŸããããšãé¡ã£ãŠããŸãã éèŠãªãããã¯ãã«ããŒããããšãå¿ããããäœãã«æ°ã¥ããªãã£ãããæžãããããŠããããä¿®æ£ãããŠããã ããŸãã
æ®å¿µãªãããçŸåšã®ããŒãžã§ã³ã®ããã¹ããšãã£ã¿ãŒã®ãã¬ãŒã ã¯ãŒã¯å ã§ã¯ãMartin Broderã®ãã¹ãŠã®ã¢ã€ãã¢ãå®è£ ãããŠããããã§ã¯ãããŸãããããªãŒãã³ãœãŒã¹ã³ãã¥ããã£ã®ããã®äœæ¥ããããŸãã ãã®ãããžã§ã¯ããç解ãããšããç§ã¯ããã€ãã®åé¡ãæžãã1ã€ã®ãã°ãä¿®æ£ããåãããšãããããã«ä¿ããŸããã å°ãªããšãããªãèªèº«ã®ããã«ãããããŠãã ãã;ããªãã¯ç¢ºãã«ä»ã®äœãé¢çœããã®ãèŠã€ããã§ãããã ã©ãã ãã®ä»äºãããªããåŸ ã£ãŠããããèŠãŠãã ããã
èšäºã®å·ç以æ¥ãå€ãã®ããšãå€ãã£ãå¯èœæ§ããããŸãã å·çæç¹ã®æåŸã®ã³ãããïŒ c3782a8dc0b91e5a6ae2c2ecd528daa1f42b3a9a