ÀÌ ±ÛÀº »ýȰÄÚµùÀÇ web2 nodejs °ÁÂÀÇ ¾ÕºÎºÐÀ» º¸°í ÅØ½ºÆ®·Î Á¤¸®ÇÑ °ÍÀÔ´Ï´Ù.
»ýȰÄÚµù¿¡´Â ÄÚµù¿¡ °üÇÑ ¸¹Àº °ÁµéÀÌ ÀÖ½À´Ï´Ù.
node.js´Â javasript¸¦ ¼¹ö¿¡¼¿¡µµ µ¹¾Æ°¡µµ·Ï ¸¸µç °ÍÀÔ´Ï´Ù. ÀÚ¹Ù½ºÅ©¸³´Â ¿ø·¡ À¥ºê¶ó¿ìÀú¿¡¼¸¸ µ¹¾Æ°¡µµ·Ï ¸¸µé¾îÁø ¾ð¾î¿´½À´Ï´Ù.
ÇÏÁö¸¸ ¼¹ö¿¡¼µµ »ç¿ë°¡´ÉÇÑ ¾ð¾î·Î µÇ¾ú½À´Ï´Ù. À¥¼¹ö»ó¿¡¼ »ç¿ëµÈ ¾ð´õ´Â php, java(javascript¿Í ´Ù¸§), pythonµîÀÇ ¾ð¾îµéÀÌ ÀÖ¾ú½À´Ï´Ù. ÇÏÁö¸¸ ¾îÂ÷ÇÇ À¥Àº ºê¶ó¿ìÀú·Î Á¢¼ÓÇϱ⠶§¹®¿¡ »çÀÌÆ®¸¦ ¸¸µé¶§´Â javascript¸¦ ¾µ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù. Áö±Ý±îÁö´Â ¼¹öÃø ¾ð¾î¿Í ºê¶ó¿ìÀú¿ë ¾ð¾î 2°¡Áö¸¦ »ç¿ëÇØ¾ßÇßÁö¸¸ ÀÌÁ¦´Â ÇϳªÀÇ ¾ð¾î·Î 󸮰¡ °¡´ÉÇÏ°Ô µÈ °ÍÀÔ´Ï´Ù.
nodejs¸¦ ¼³Ä¡ÇÑ ÈÄ nodejs¸¦ ½ÇÇàÇÏ´Â ¹æ¹ýÀº command prompt¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. À©µµ¿ìÀÇ ¿ÞÂÊ ¾Æ·¡ °Ë»öâ¿¡ node¸¦ ÀÔ·ÂÇÏ¸é ¾Æ·¡¿Í °°ÀÌ nodejs¸¦ ½ÇÇà½Ãų ¼ö ÀÖ½À´Ï´Ù.
ÀÚ½ÅÀÌ ¿øÇÏ´Â Æú´õ¿¡ ¾Æ·¡¿Í °°Àº ³»¿ëÀ¸·Î main.jsÆÄÀÏÀ» ¸¸µì´Ï´Ù. text¿¡µðÅ͸¦ »ç¿ëÇÏ¸é µË´Ï´Ù. nodejs´Â js·Î ¸¸µç ¼Ò½ºÄڵ带 ½ÇÇàÇØ¼ À¥¼¹ö¸¦ µ¹¸®´Â °³³äÀÔ´Ï´Ù. ¾Æ·¡ÀÇ ³»¿ëÀº À¥¼¹ö¸¦ ½ÃÀÛÇϴµ¥ Æ÷Æ® 3000À¸·Î ½ÃÀÛÇÒ °ÍÀ̰í index.htmlÀÌ ÀÖÀ¸¸é index.htmlÀ» ºê¶ó¿ìÀú¿¡ º¸¿©ÁÖ¶ó´Â ¶æÀÔ´Ï´Ù.
main.js
var http = require('http');
var fs = require('fs');
var app = http.createServer(function(request,response){
var url = request.url;
if(url == '/'){
url = '/index.html';
}
if(url == '/favicon.ico'){
response.writeHead(404);
response.end();
return;
}
response.writeHead(200);
console.log(__dirname + url);
response.end(fs.readFileSync(__dirname + url));
});
app.listen(3000);
command»óÅ¿¡¼ node main.js·Î ÀÌ ¼Ò½ºÄڵ带 ½ÇÇàÇϵµ·Ï ÇÕ´Ï´Ù. Àú´Â d:µå¶óÀ̺êÀÇ dev\nodejs\¹æ¿¡ mani.js°¡ ÀÖ½À´Ï´Ù. node¸í·ÉÀ¸·Î main.js¸¦ ½ÇÇà½ÃŰ¸é ¾Æ¹« Àϵµ ¹ú¾îÁöÁö ¾Ê½À´Ï´Ù. À¥¼ºñ½º¸¦ »çÀÛÇßÀ» »ÓÀ̱⠶§¹®ÀÔ´Ï´Ù.
D:\dev\nodejs>node main.js
ÀÌÁ¦ À¥ºê¶ó¿ìÀú¸¦ ½ÇÇà½Ã۰í ÁÖ¼Òâ¿¡ localhost:3000À» ÀÔ·ÂÇÕ´Ï´Ù. ¾ÆÁ÷ index.htmlÆÄÀÏÀÌ ¾ø±â ¶§¹®¿¡ ¿¡·¯°¡ ¹ß»ýÇÒ °ÍÀÔ´Ï´Ù.
´ë½Å main.js Äڵ忡¼ console¿¡ urlÀ» Ãâ·ÂÇϵµ·Ï Ç߱⠶§¹®¿¡ cmdâ¿¡ d:\dev\nodejs\index.htmlÀ̶ó´Â ³»¿ëÀÌ Ãâ·ÂµÉ °ÍÀÔ´Ï´Ù.
ÀÌÁ¦ index.htmlÀ» ¸¸µé Â÷·ÊÀÔ´Ï´Ù. ¾Æ·¡ÀÇ ³»¿ëÀ¸·Î index.htmlÆÄÀÏÀ» ¸¸µì´Ï´Ù.
index.html
<html>
<body>
test page
</body>
</html>
ÀÌÁ¦ cmdâ¿¡¼ node main.js·Î ¼¹ö¸¦ ÀÛµ¿½Ãŵ´Ï´Ù. ±×¸®°í ºê¶ó¿ìÀú ÁÖ¼Òâ¿¡ localhost:3000À» ÀÔ·ÂÇÕ´Ï´Ù. ±×·¯¸é index.htmlÆÄÀÏÀÇ ³»¿ëÀÌ ºê¶ó¿ìÀú¿¡ º¸À̰í cmd¿¡´Â urlÀÌ Ãâ·ÂµË´Ï´Ù. main.jsÀÇ console.log(__dirname + url);°¡ ÀÛµ¿ÇÑ °á°úÀÔ´Ï´Ù.
- ÀÌÁ¦ »ç¿ëÀÚ°¡ ¼³Á¤ÇÑ °ªÀ» ÀÌ¿ëÇØ¼ ´Ù¸£°Ô ÀÛµ¿ÇÏ´Â À¥ÆäÀÌÁö¸¦ ¸¸µé¾îº¼ Â÷·ÊÀÔ´Ï´Ù. ÁÖ¼ÒâÀÇ µÞÂÊ¿¡ ?ºÙ¿©¼ °ªÀ» Àü´ÞÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. ÀÌ ¶§ ?µÚ¿¡ ½áÁÖ´Â °ÍÀ» querystringÀ̶ó°í ÇÕ´Ï´Ù. ¿ì¼± Äڵ忡 querystring parse¸¦ À§ÇØ require('rul')Ãß°¡ÇÕ´Ï´Ù. nodejs¿¡¼µµ ¾î¶² ±â´ÉÀ» »ç¿ëÇϱâ À§Çؼ´Â ÇØ´ç package¸¦ ºÒ·¯¿Í¾ß ÇÕ´Ï´Ù. package¸¦ ºÒ·¯¿À´Â ¸í·ÉÀº requireÀÔ´Ï´Ù.
- ¸¶Áö¸·ÁÙ¿¡ ºê¶ó¿ìÀú¿¡ »ç¿ëÀÚ°¡ ÁÖ¼Òâ µÚ¿¡ ÀÔ·ÂÇÑ id°ªÀ» Ãâ·ÂÇϵµ·ÏÇÏ´Â ±¸¹®À» Ãß°¡ÇÕ´Ï´Ù. response.end(queryData.id) <-- ºê¶ó¿ìÀú¿¡ querystringÁß id°ª Ãâ·Â
-- ¾Æ·¡ Äڵ带 ½ÇÇàÇϸé console°ú ºê¶ó¿ìÀú¿¡ qeuryData.id°¡ Ãâ·ÂµÈ´Ù. ºê¶ó¿ìÀú¿¡¼ localhost:3000/?id=java¶ó°í ÀÔ·ÂÇ߱⠶§¹®¿¡ response.end(queryData.id)¸í·É¿¡ ÀÇÇØ¼ 'java'°¡ Ãâ·ÂµÇ¾ú½À´Ï´Ù.
var http = require('http');
var fs = require('fs');
var url = require('url');
var app = http.createServer(function(request,response){
var _url = request.url;
var queryData = url.parse(_url, true).query;
console.log(queryData.id);
if(_url == '/'){
_url = '/index.html';
}
if(_url == '/favicon.ico'){
response.writeHead(404);
response.end();
return;
}
response.writeHead(200);
console.log(__dirname + _url);
// response.end(fs.readFileSync(__dirname + _url));
response.end(queryData.id);
});
app.listen(3000);
querystringÀ¸·Î ¹ÞÀº °ªÀ» template¸¦ ÀÌ¿ëÇØ¼ web¿¡ ¹Ý¿µÇÒ ¼ö ÀÖ´Ù.
` `À» ÀÌ¿ëÇØ¼ template¿¡ À¥¿¡ Ãâ·ÂÇϰíÀÚ ÇÏ´Â ³»¿ëÀ» ¼³Á¤ÇÑ´Ù. querystringÀ¸·Î ºÎÅÍ ¹ÞÀº °ªÀ» ¹Ý¿µÇϱâ À§ÇØ ${ }¾È¿¡ º¯¼ö¸íÀ» ³ÖÀ¸¸é µÈ´Ù. ¾Æ·¡ÀÇ Äڵ带 ½ÇÇàÇÏ¸é ºê¶ó¿ìÀú¿¡ ¾Æ·¡¿Í °°ÀÌ Ãâ·ÂµÈ´Ù.
var http = require('http');
var fs = require('fs');
var url = require('url');
var app = http.createServer(function(request,response){
var _url = request.url;
var queryData = url.parse(_url, true).query;
console.log(queryData.id);
if(_url == '/'){
_url = '/index.html';
}
if(_url == '/favicon.ico'){
response.writeHead(404);
response.end();
return;
}
response.writeHead(200);
console.log(__dirname + _url);
var template = `
<!doctype html>
<html>
<body>
<p>value from ${queryData.id}</p>
</body>
</html>
`
// response.end(fs.readFileSync(__dirname + _url));
response.end(template);
});
app.listen(3000);