node.jsã§ããã°ã©ãã³ã°ããŠããããã³ãŒãã§ã¯ãšãªã«ãŒãã£ã³ã°ãæžãã®ã«ããããããŠããå Žåãããžãã¹ç®çã§ã°ããŒãã«å€æ°ã䜿çšããããšã«åèŠã¯ãªããé床ã®èªç±ã¯å€§è¡ã«æ害ã§ããããšã«åæããå Žåãå
šäœäž»çŸ©ã®é±æ«ã°ã«ãŒãã¯ããªãã®ããã®ä»£æ¿ãã©ãããã©ãŒã ã®ãããã¿ã€ããçšæããŸãã
Webã¢ããªã±ãŒã·ã§ã³éçº ã å
šäœäž»çŸ©ã¹ã¿ã€ã«ã¯ãrequireãéããŠã¢ããªã±ãŒã·ã§ã³ã«ãã¬ãŒã ã¯ãŒã¯ãåã蟌ãããšãæå³ããã®ã§ã¯ãªãããã¬ãŒã ã¯ãŒã¯æ§é ã«ã¢ããªã±ãŒã·ã§ã³ãåã蟌ãããšãæå³ããŸããã¢ããªã±ãŒã·ã§ã³ã³ãŒãã®ãã©ã°ã¡ã³ãã¯ããã¹ãŠã®ã¹ãããã§è¿œå ã®å¶éãšèª²ããããã³ãŒãããã³ããŒã¿æ§é ãåŠçããŸãã ããŒãã®éçºè
ã䞻匵ããããã«ã
å°é家ãããå°ãªã人ãé«æ§èœã·ã¹ãã ãéçºã§ãããšããäºå®ã«ã€ããŠ-ããŠãããã§ããªãã¯ããªãã圌ããã©ããªã·ã¹ãã ãç¹ã«éåæã§ãã©ã®ã¹ãããã§å€±ãããã³ãŒã«ããã¯ãšã¡ã¢ãªãªãŒã¯ãããããç解ããŠããŸãã æãè
ããã®ä¿è·ãšããç¹ã§ã¯ããã®å¥è·¡ã®ãããã¿ã€ãã¯å®çŸããŸããã ãããŠãã¡ãããç§ã¯ããªãããå€ãã®å»ºèšçãªæ¹å€ãæåŸ
ããŠããŸãããããã¿ã€ãã¯åæ²¹ãªã®ã§ãéå»10幎éã«ããã£ãŠç§ãã¡ã®ããŒã ããå€ãã®æŠå¿µçãªã¢ã€ãã¢ãéããŠããŸããã
Impressãšããååã§ãã2æ¥åã«ç»å ŽããŸããããããŠãã¯ã-ããã¯æãé£ãã質åã§ãã
æ©èœãšæ©èœ
- ãã¡ã€ã«ã·ã¹ãã ã«åºã¥ããURLã®ã«ãŒãã£ã³ã° -ãã£ã¬ã¯ããªã®äœæ-URLã®äžéšã«ãªãããã£ã¬ã¯ããªã¯ããã«èŠªãã£ã¬ã¯ããªãããã¹ãŠã®ãã³ãã©ãŒãç¶æ¿ããŸãããã£ã¬ã¯ããªèªäœã«é
眮ããããã®ã¯ãã¹ãŠãå®è¡ããžãã¯ãŸãã¯ããŒãžã®å€èŠ³ããªãŒããŒã©ã€ãããŸãã ãªããªã äž»ã«ãµãŒããŒãšã®åçãªçžäºäœçšã䌎ãåäžããŒãžã®ã¢ããªã±ãŒã·ã§ã³ã«çŠç¹ãåœãŠãŠããŸããã»ãšãã©ãã¹ãŠã®å Žåããããã¯ãã¹ãŠããŒãžã®çæã«å¿
èŠã§ã¯ãªããJSONã«åºã¥ãããµãŒããŒAPIããã°ããäœæããããã«å¿
èŠã§ãã èŠæ±åŠçã·ãŒã±ã³ã¹ã¯ãæåã«èŠæ±ããããã£ã¬ã¯ããªãŸãã¯èŠªãã£ã¬ã¯ããªã®ãã§ãŒã³ã§request.jsãã¡ã€ã«ãæ€çŽ¢ããŠå®è¡ããã¢ããªã±ãŒã·ã§ã³ã«ãŒããèŠã€ãããããŸãã¯ã¢ããªã±ãŒã·ã§ã³ã«ãŒãã§åæ¢ããŸãã次ã«ãHTTP metadã®ååã«å¯Ÿå¿ããååã®ãã¡ã€ã«ãæ€çŽ¢ããŠå®è¡ããŸãïŒget.jsãpost.jsãªã©ïŒããã³ãã¬ãŒããã¬ã³ããªã³ã°ããŸãã
- RAMã§ã®ãµãŒããŒåŽã®JavaScriptãšãã³ãã¬ãŒãã®ãã£ãã·ã¥ -ãã¹ãŠã®ãã³ãã©ãŒãšãã³ãã¬ãŒãã¯ãæåã«ã¡ã¢ãªã«ã¢ã¯ã»ã¹ãããç¹°ãè¿ã䜿çšäžã«ãã°ããæ€çŽ¢ããããã®ã€ã³ããã¯ã¹ãæäŸãããŸãã
- ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãåèµ·åããã«ã¢ããªã±ãŒã·ã§ã³ã³ãŒããå€æŽããæ©èœ -ãã¡ã€ã«ãèªã¿åããããã¹ãŠã®ãã£ã¬ã¯ããªãç£èŠããããã£ã¹ã¯äžã®ã³ãŒããšãã³ãã¬ãŒããå€æŽãããšãã£ãã·ã¥ãæŽæ°ããããã¡ã€ã«ãåé€ãããšãã£ãã·ã¥ãã¯ãªã¢ãããŸãã
- è€æ°ã®ããŒã ããããã¯ãŒã¯ã€ã³ã¿ãŒãã§ã€ã¹ããã¹ãããããã³ã«ãäžåºŠã«æäŸ-as ã¹ããŒããã«ã¢ããªã±ãŒã·ã§ã³ãã€ãŸã ç¶æ
ãã©ã³ãã ã¢ã¯ã»ã¹ã¡ã¢ãªïŒãŠãŒã¶ãŒã»ãã·ã§ã³ãšãµããžã§ã¯ãé åã®ä»ã®ãªããžã§ã¯ãã®ç¶æ
ïŒã«ä¿åãããããç°ãªãããŒãïŒããšãã°ãHTTPãšSSEïŒã§åããŠãŒã¶ãŒã«ãµãŒãã¹ãæäŸãããã¹ãŠã®ãµãŒããŒã³ã³ããŒãã³ããå
±æã¡ã¢ãªãæã€ããšãéåžžã«åœ¹ç«ã¡ãŸãã
- ããã€ãã®æã¡äžãæŠç¥ïŒ
- 1ã€ã®ããã»ã¹ ïŒãã¹ãŠã1ã€ã®åŠçã¹ã¬ããã§åŠçãããŸãïŒã
- ç¹æ®ãªããã»ã¹ ïŒåããŒãã«ã¯ãç¬èªã®ã¯ãŒã«ãŒ+ã¡ã€ã³ããã»ã¹ãã¹ã¿ãŒããããŸãïŒã
- ãã«ãã¹ã¬ããã®éç¹ååŠç ïŒé¡äŒŒã®ã¯ãŒã«ãŒãéç¹åããã»ã¹ããã¹ã¿ãŒã¯ãã¹ãŠã®ããŒããããªã¯ãšã¹ããåãå
¥ããã¯ãŒã«ãŒéã§ã©ã³ãã ã«åæ£ããŸãïŒã
- IPã¢ãã¬ã¹ã«ããç¹å®ã®ã¯ãŒã«ãŒãžã®ã¯ã©ã€ã¢ã³ããã€ã³ãã£ã³ã° ïŒIPã«ããã¹ãã£ãããŒïŒã䜿çšãããã«ãã¹ã¬ããåŠçãããã«ãããåŸç¶ã®ã¯ã©ã€ã¢ã³ãèŠæ±ã¯ããã®ã¯ãŒã«ãŒã«é¢é£ä»ããããã»ãã·ã§ã³ãšããã«é¢é£ä»ããããä»ã®ç¶æ
æ§é ãæ¢ã«å±éãããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã«ããåé¢ã䌎ãããã»ã¹ã®å°éå ïŒãªãªãŒã¹ã«å«ãŸããããã¹ãæžã¿ïŒ-è€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãåãã·ã¹ãã ã§å®è¡ãããŠãããäžæ¹ãä»æ¹ã«å¹²æžããå¯èœæ§ãããå Žåã¯ãããããç°ãªãã¯ãŒã«ãŒã«åé¢ããããšããå§ãããŸãã
- ç¹å®ã®URLãåŠçããããã®åã
ã®ããã»ã¹ã®çºèœïŒãªãªãŒã¹ã«å«ãŸãããéçºäžïŒ-ããã¯ç¹ã«ãé·ãããããã³ã°ããžãã¯ãå¿
èŠãšãããã³ãã©ãŒåãã§ãããããã®å Žåãäžè¬çãªãªã¢ã¯ã¿ãŒãåããåè·¯ã¯é©åã§ã¯ãªãããŠãŒã¶ãŒã«ããªã¯ãšã¹ããåŠçãããŸãããããã³ãã©ãŒãããã£ãåŠçã®æåŸã«ãIPCãä»ããŠèŠªã¯ãŒã«ãŒã«çµæãè¿ããŸãã芪ã¯ãŒã«ãŒã¯ãããšãã°SSEãä»ããŠæ¢ã«çµæãã¯ã©ã€ã¢ã³ãã«è¿ããŸãã
- ãµããã£ã¬ã¯ããªå
ã®ãã³ãã¬ãŒããã©ã°ã¡ã³ãã®ãµããŒããç¶æ¿ãåå®çŸ©ãå«ãçµã¿èŸŒã¿ã®ã·ã³ãã«ãªãã³ãã¬ãŒããšã³ãžã³ ã ãã³ãã¬ãŒããšã³ãžã³ã¯ãããžãã¹ããžãã¯ããã»ããµã«ãã£ãŠçæãããres.contextã«é
眮ãããããŒã¿ã«ã®ã¿ã¢ã¯ã»ã¹ã§ããŸãã ããã§EJSãªã©ã®æ¢è£œã®ã³ãŒããããæ¢ãããªãã£ãçç±ãå°ãããšããã®ã³ãŒããããšãã°EJSã§ãããšãã°äžé£ã®åææäœããã®ä»ã®æ¬ é¥ããããŸãããAJAXã¢ããªã±ãŒã·ã§ã³ã«ã¯è€éãªãã®ã¯å¿
èŠãããŸããã ã¯ã©ã€ã¢ã³ãã§ãèŠå¶ãããŠããªããã³ãã¬ãŒããšã³ãžã³ã䜿çšããŸãã
- Cookieããã³ã»ãã·ã§ã³ã®ã¡ã«ããºã ã®ãµããŒã -ã¡ã¢ãªå
ã®ç¶æ
ãŸãã¯MongoDBå
ã®ä¿åç¶æ
ãå«ã¿ãã¯ãŒã«ãŒãã¯ã©ãã·ã¥ããå Žåã次ã®ãªã¯ãšã¹ãã¯ããŒã¿ããŒã¹ããç¶æ
ãçºçãããå€æŽãè¡ãããå Žåã«ã®ã¿ä¿åãããŸãã äžæãªã»ãã·ã§ã³ããŒã¯æåŠãããåé€ãããŸãã
- éçã³ã³ãã³ããšã¹ããªãŒãã³ã°ã®ãªã¿ãŒã³ -æ¹åãã¹ãç¹ã¯ãŸã å€ããããŸããã¡ã¢ãªå
ã®éçãã£ãã·ã¥ãšããã®ãã£ãã·ã¥ã®æ§æã§ã®ç®¡çã¯ãŸããªã衚瀺ãããŸãã
- urlæžãæãããµããŒããããã«ãã€ã³ãªã¯ãšã¹ãã«ãŒã¿ãŒ ïŒãªããŒã¹ãããã·ïŒ-æ£èŠè¡šçŸã«åŸã£ãŠãåã
ã®URLãå¥ã®ãã¹ããšããŒãã«ãªãã€ã¬ã¯ããããŠãŒã¶ãŒããã®å¿çãæäŸã§ããŸãã
- ã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãå®å
šã«åèµ·åããã«å€æŽã§ããæ©èœãåããJSON圢åŒã®æè»ãªæ§æ ïŒçŸåšã§ãã¯ã©ãã·ã¥ããããšããããŸãïŒã
- åçŽãªã¯ãšãªãã°-ãããéçºããããã¿ãŒã³ããŒãœãªã¥ãŒã·ã§ã³ãåºå®ããå¿
èŠããããŸãã
- çµã¿èŸŒã¿ã®ããŒã¿ããŒã¹ã¢ã¯ã»ã¹æ©èœ -ãããŸã§ã¯ããŒã¿ããŒã¹ãšããŠMongoã®ã¿ã§ããããä»ã®ããŒã¿ããŒã¹ãžã®ç¬ç«ããã¢ã¯ã»ã¹ã¯çŠæ¢ãããŠããŸããã
è¿ãå°æ¥ã®èšç»
- ãããã§ã¹ããªã©ã䜿çšããŠãªãã©ã€ã³ã¢ããªã±ãŒã·ã§ã³ïŒHTML5ãªãã©ã€ã³ã¢ããªã±ãŒã·ã§ã³ãã£ãã·ã¥ïŒã®ãµããŒããè¿œå ããŸãã
- POSTãªã¯ãšã¹ããä»ããŠãã¡ã€ã«ã®ã¢ããããŒããå®è£
ããŸãã
- æ§æãããã®ãã£ãã·ã¥ãæè»ã«ç®¡çããŠãRAMã«éçã«ãã£ãã·ã¥ããŸãã
- ãªãã·ã§ã³ã®geoIPã«ãã¯ã¢ããããã蟌ã¿ãŸãã
- ã«ã¹ã¿ã ãšã©ãŒããŒãžãã³ãã¬ãŒãïŒ404ãªã©ïŒãäœæããŸãã
- ãã£ã¬ã¯ããªã«é
眮ãããaccess.jsãã¡ã€ã«ã䜿çšãããã£ã¬ã¯ããªãžã®ã¢ã¯ã»ã¹å¶éãå°å
¥ããŸãã
- APIãã³ãã©ãŒã®çµæã®ãªãã·ã§ã³åºåã®ãµããŒãã¯ãJSONã ãã§ãªããXMLïŒç§ã®åã
ã®XMLäžå¯å®¹ã®ããããã®è±éçãªã¹ããããèæ
®ã«å
¥ããŠãã ããïŒãããã³XML圢åŒã®APIã§ã®èŠæ±ã®åãå
¥ãïŒ7ãä¿æïŒã«ããªããŸãã
- MongoDBã«ã³ã³ãã³ãã¹ãã¬ãŒãžãåããã·ã³ãã«ãªCMSã
- ã¢ããªã±ãŒã·ã§ã³ããã¡ãŒã«ãéä¿¡ããããã®ãã©ã°ã€ã³ã
- ãµãŒããŒã®ã€ãã·ã¢ããã§ãµãŒããŒããã¯ã©ã€ã¢ã³ãã«ã€ãã³ãããããŒããã£ã¹ãããããã®SSEïŒãµãŒããŒéä¿¡ã€ãã³ãïŒã®ãµããŒãïŒçŸåšéçºäžïŒã
- ãã¢ãšãæ£åžžãªã·ã£ããããŠã³ãïŒçŸåšéçºäžïŒã
ã€ã³ã¹ããŒã«ãšã»ããã¢ãã
1. npm ïŒ
https://npmjs.org/package/impress ïŒ
ããé
眮ã ãŸã$ npm install impress
2.ãããžã§ã¯ããã³ãã¬ãŒããã³ããŒããŸã -/ node_modules / impress / examples / copyContentToProjectFolderãã£ã¬ã¯ããªã®å
容ããããžã§ã¯ããã£ã¬ã¯ããªïŒserver.jsãsetup.jsãconfig.jsãsitesãã£ã¬ã¯ããªïŒã«è»¢éãããŸãã
3. config.jsãã¡ã€ã«ãèšå®ããŠãæ§æã»ã¯ã·ã§ã³ãééããŸãã
ããŒã¿ããŒã¹ -èµ·åæã«èªåçã«éããããªã¹ããããã³ã¬ã¯ã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããããŒã¿ããŒã¹ïŒdb.dbName.collectionName.findïŒ...ïŒã èšå®äŸïŒ
dbName: { url: "mongodb://localhost:27017/dbName", collections: ["collname1", "collname2"] }
ã»ãã·ã§ã³ -ååã¯ãã»ãã·ã§ã³Cookieãçæããããã®é·ããšæåã»ãããã»ãã·ã§ã³ãæ°žç¶çã«ä¿åããããã®ããŒã¹ã®ååã§ãã
ã¯ã©ã¹ã¿ãŒ -ã€ã³ã¹ã¿ã³ã¹æŠç¥ã®ã»ããã¢ããïŒãã«ãã¹ã¬ããã¿ã€ãïŒã
ãµãŒã㌠-ååä»ããµãŒããŒïŒã€ã³ã¿ãŒãã§ãŒã¹/ããŒãïŒãåãã¹ããã£ãŒã«ã-ãã®ãµãŒããŒããæå®ããå¿
èŠãããååä»ããã¹ãã®é
åãéç-éçãã¬ã³ããªã³ã°ããããã®ãã¡ã€ã«ãã¹ã¯ã®é
åãããšãã°["/ css / *"ã "/ images / *" ãã/ js / *ããã/ favicon.icoããã/ index.htmlã]ã
hosts-ååä»ããã¹ãïŒä»®æ³ãã¹ãïŒãããšãã°ãã* .myhost.comãã®ããã«ãåœåã«ãã¹ã¯ã䜿çšã§ããŸãã
routes-ååä»ããªã¯ãšã¹ã転éã«ãŒãã
4. MongoDBã§
ããŒã¿æ§é ãåæåããã«ã¯ãããŒãsetup.jsãå®è¡ããŠãyããæŒããŸãã
5. server.jsãã¡ã€ã«ã«ãè¿œå ã®åæåã³ãŒããèšè¿°ã§ããŸãã
require('impress'); impress.init(function() {
6.ãµãŒããŒãèµ·åããŸã $ node server.js
äŸãèŠã
1.ãã³ãã¬ãŒãïŒãµãŒããŒã®å®è¡äžã«
httpïŒ// localhostãéã
ãŸãããã§ãã³ãã¬ãŒããèŠãŠãã ããïŒ/sites/localhost/html.template
ã¢ããªã±ãŒã·ã§ã³ãèŠãŠããã¢ã«ãŠã³ããäœæããããµã€ã³ã€ã³ããã¯ãªãã¯ããŸã
2.ããžãã¯ã®ç¶æ¿ã§ãleft.templateã
ãã³ãã¬ãŒãã
ãªãŒããŒã©ã€ãããäŸã httpãéã
ïŒ// localhost / override次ã®ãã³ãã¬ãŒããã芧ãã ããïŒ/sites/localhost/override/left.template
åºæ¬çãªãã³ãã¬ãŒãã¯ãã¡ãïŒ/sites/localhost/html.template
ãµãŒããŒããžãã¯ãã³ââãã©ãŒïŒ/sites/localhost/request.js
3. JSONå¿çã
䜿çšããAPIã¡ãœããã®äŸ ãhttpïŒ//localhost/api/examples/methodName.jsonãåç
§ããŠãã ããã
ã³ãŒãã¯ããã«ãããŸã/sites/localhost/api/examples/methodName.json/get.js
4.å¿åã»ãã·ã§ã³ãéå§ããäŸ ïŒ
httpïŒ//localhost/api/auth/anonymousSession.jsonããã³ã³ãŒãïŒ/sites/localhost/api/auth/anonymousSession.json/get.js
5. POSTãªã¯ãšã¹ãã®äŸ ïŒãEmailããã©ã¡ãŒã¿ãŒã䜿çšããŠ
localhost / api / auth / regvalidation.jsonã§POSTãäœæãããšããèããã
ããã³ã³ãŒãïŒ/sites/localhost/api/auth/regvalidation.json/post.js
6. MongoDBããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹äŸ ::
httpïŒ//localhost/api/examples/getUsers.jsonã³ãŒãã¯æ¬¡ã®ãšããã§ãïŒ/sites/localhost/api/examples/getUsers.json/get.js
ãŸãã¯ããã§ã¯æ£ããã§ãïŒ
module.exports = function(req, res, callback) { res.context.data = []; db.impress.users.find({}).toArray(function(err, nodes) { res.context.data = nodes; callback(); }); }
åç
§è³æ
GithubïŒ
https :
//github.com/tshemsedinov/impressnpmïŒ
https :
//npmjs.org/package/impressUPDïŒ Hetzner EX4ãã¹ãã£ã³ã°
ïŒIntel Core i7-2600 Quad-Coreã16 GB DDR3 RAMïŒã§ã®éåžžã«å€±ç€Œãªãã¹ãã§ã¯ã5ãã¡ã€ã«ã®ãã³ãã¬ãŒããšããŒã¿ããŒã¹ãžã®åçŽãªãªã¯ãšã¹ãã§æ¯ç§22,572ã®ãªã¯ãšã¹ããçºçããŸããã