๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿ“—Nodejs : section26 - ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ •๋ฆฌ ์ •๋ˆํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ“—Nodejs/โšกver.0

๐Ÿ“—Nodejs : section26 - ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์ •๋ฆฌ ์ •๋ˆํ•˜๊ธฐ

4:Bee 2024. 6. 17. 23:24
728x90

์ด๋ฒˆ ์ˆ˜์—…์—์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ด์ „์— ์ œ์ž‘ํ–ˆ๋˜ ์ฝ”๋“œ๋“ค์„ ํ•จ์ˆ˜ํ™”ํ•ด์„œ ๋ฆฌํŒฉํ† ๋ง์„ ํ•˜๋Š” ๊ณผ์ •์„ ๊ฐ€์งˆ ๊ฒƒ์ด๋‹ค. ์šฐ์„  ๊ฐ€์žฅ ํฌ๊ฒŒ ์ค‘๋ณต์ด ๋˜๊ณ  ์žˆ๋Š” ๋ถ€๋ถ„์€ ๋ฐ”๋กœ html ๋ถ€๋ถ„์ด๋‹ค. ๊ทธ ๋‹ค์Œ์œผ๋ก  ํŒŒ์ผ์„ ๋ฆฌ์ŠคํŠธํ™” ํ•˜๋Š” list ๋ถ€๋ถ„์ด๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„๋“ค์„ ํ•จ์ˆ˜๋กœ ๋งŒ๋“  ์ฝ”๋“œ๋Š” ๋‹ค์Œ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


function templateHTML(title, list, body) {
  return `
  <!doctype html>
  <html>
  <head>
    <title>WEB1 - ${title}</title>
    <meta charset="utf-8">
  </head>
  <body>
    <h1><a href="/">WEB</a></h1>
    ${list}
    ${body}
  </body>
  </html>
  `;
}

function templateList(filelist) {
  var list = '<ul>';
  var i = 0;
  while (i < filelist.length) {
    list = list + `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`;
    i = i + 1;
  }
  list = list + '</ul>';
  return list;
}

์ดํ›„ ์šฐ๋ฆฌ๊ฐ€ ์œ„์˜ ํ•จ์ˆ˜๋“ค์„ ํ™œ์šฉํ•ด์„œ ๋ณธ๋ฌธ์„ ์ž‘์„ฑ ํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.


var app = http.createServer(function (request, response) {
  var _url = request.url;
  var queryData = url.parse(_url, true).query;
  var pathname = url.parse(_url, true).pathname;
  if (pathname === '/') {
    if (queryData.id === undefined) {
      fs.readdir('./data', function (error, filelist) {
        var title = 'Welcome';
        var description = 'Hello, Node.js';
        var list = templateList(filelist);
        var template = templateHTML(title, list, `<h2>${title}</h2>${description}`);
        response.writeHead(200);
        response.end(template);
      })
    } else {
      fs.readdir('./data', function (error, filelist) {
        fs.readFile(`data/${queryData.id}`, 'utf8', function (err, description) {
          var title = queryData.id;
          var list = templateList(filelist);
          var template = templateHTML(title, list, `<h2>${title}</h2>${description}`);
          response.writeHead(200);
          response.end(template);
        });
      });
    }
  } else {
    response.writeHead(404);
    response.end('Not found');
  }

});
 
app.listen(3000);

์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์šฐ๋ฆฌ๊ฐ€ ์ค‘์  ์ ์œผ๋กœ ๋ณด์•„์•ผ ํ•  ์ฝ”๋“œ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๋ช…๋ฃŒํ•˜๊ฒŒ ๋ณด์ธ๋‹ค. ์—ฌ๊ธฐ์„œ ํ•œ๋ฐœ์ž๊ตญ ๋” ํ•ด์„œ if๋ฌธ๊ณผ else๋ฌธ์—์„œ ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„๋“ค์˜ ์ฝ”๋“œ๋“ค๋„ ์žˆ๋‹ค. ์ด ๋ถ€๋ถ„ ๋˜ํ•œ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•˜๊ณ  ์žฌํ™œ์šฉํ•˜๋ฉด ๋”์šฑ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์งˆ ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ๊นŒ์ง€๋Š” main.js ์Šคํฌ๋ฆฝํŠธ ํ•˜๋‚˜์— ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋‹ค. js๋Š” ES6๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“ˆํ˜•์‹์œผ๋กœ ์ž‘์„ฑ๋˜๊ณ  ๋™์ž‘ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„์—์„œ ์ž‘์„ฑ๋œ ํ•จ์ˆ˜๋“ค์„ ๋ชจ๋“ˆํ™”ํ•ด์„œ ๊ด€๋ฆฌ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ๋˜๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. 

์ง€๊ธˆ๊นŒ์ง€์˜ ์ฝ”๋“œ๋“ค์„ ๋ณด๋ฉด nodejs์˜ ํ•ต์‹ฌ ๋ถ€๋ถ„๋“ค์€ ๋ชจ๋‘ ๋ฐฐ์›Œ ๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. ํ•จ์ˆ˜๋„ ๋ถ„๋ฆฌ๊ฐ€ ๋˜์—ˆ์œผ๋‹ˆ ์ด๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ๋Š” ์กฐ๊ธˆ ๋” ๋ฉด๋ฐ€ํ•˜๊ฒŒ ๋ถ„์„ํ•˜๊ณ  ๊ณต๋ฐฑ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ๊ณต๋ฐฑ์„ ๋‹ค์‹œ๊ธˆ ์ฒด์šธ ์ˆ˜ ์žˆ๋Š” ๋ฆฌ๋งˆ์ธ๋“œ ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋ ค ํ•œ๋‹ค.

728x90
Comments