nodejs ํŒŒ์ผ ๋ชฉ๋ก ์ฝ์–ด์„œ ์›นํŽ˜์ด์ง€ ๋™์  ์ ์šฉ

2023. 8. 23. 14:29ใ†nodejs

data์— ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ ๋ชฉ๋ก nodejs๋กœ ์ฝ๊ธฐ

readdir.js ํŒŒ์ผ ์ƒ์„ฑ

                    //./์˜ ์˜๋ฏธ : ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ
const testFolder = './data';
const fs = require('fs');

fs.readdir(testFolder, function(error, filelist) {
  console.log(filelist);
})

console์—์„œ ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ํŒŒ์ผ ๋ชฉ๋ก ํ™•์ธ ๊ฐ€๋Šฅ!

์œ„๋ฅผ ํ™œ์šฉํ•˜์—ฌ data ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„์„ ์ด์šฉํ•ด์„œ ๊ธ€ ๋ชฉ๋ก์„ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ

var http = require('http');
var fs = require('fs');
//url์ด๋ผ๋Š” ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ผ๋Š” ์ฝ”๋“œ
var url = require('url');

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


  console.log(url.parse(_url, true).pathname);
  if(pathname === '/'){

    //ํ™ˆ ๋ถ€๋ถ„ ์„ค์ •
    if(queryData.id === undefined){
      //ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
      fs.readdir('./data', function(error, filelist){
        console.log(filelist);
        //์›นํŽ˜์ด์ง€์— ๋ณด์—ฌ์ค„ ์ฝ”๋“œ
        var title = 'Welcome';
        var description = 'Hello, node.js';

        // var list = ` <ul>
        //   <li><a href="/?id=HTML">HTML</a></li>
        //   <li><a href="/?id=CSS">CSS</a></li>
        //   <li><a href="/?id=JavaScript">JavaScript</a></li>
        // </ul>`;

        //ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ๋กœ ๊ธ€๋ชฉ๋ก ํ‘œ์‹œํ•˜๊ธฐ
        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>';

        var template = `
          <!doctype html>
          <html>
          <head>
            <title>WEB1 - ${title}</title>
            <meta charset="utf-8">
          </head>
          <body>
            <h1><a href="/">WEB</a></h1>
            ${list}
            <h2>${title}</h2>
            <p>${description}</p>
          </body>
          </html>
        `;
        response.writeHead(200);
        response.end(template);
        //()์•ˆ์— ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๋„ฃ๋ƒ์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
      })


    } else{
      fs.readdir('./data', function(error, filelist){
        console.log(filelist);
        //์›นํŽ˜์ด์ง€์— ๋ณด์—ฌ์ค„ ์ฝ”๋“œ
        var title = 'Welcome';
        var description = 'Hello, node.js';
        //ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ๋กœ ๊ธ€๋ชฉ๋ก ํ‘œ์‹œํ•˜๊ธฐ
        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>';
        //์ฟผ๋ฆฌ์ŠคํŠธ๋ง์— ๋”ฐ๋ผ ํŒŒ์ผ๋ช… ์ƒ์„ฑ                            ๋ณธ๋ฌธ ๋‚ด์šฉ
        fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
          //์›นํŽ˜์ด์ง€์— ๋ณด์—ฌ์ค„ ์ฝ”๋“œ
          var title = queryData.id;
          var template = `
            <!doctype html>
            <html>
            <head>
              <title>WEB1 - ${title}</title>
              <meta charset="utf-8">
            </head>
            <body>
              <h1><a href="/">WEB</a></h1>
              ${list}
              <h2>${title}</h2>
              <p>${description}</p>
            </body>
            </html>
          `;
          response.writeHead(200);
          response.end(template);
          //()์•ˆ์— ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๋„ฃ๋ƒ์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ
        });
      });
    }
  }else{
    //ํŒŒ์ผ์ด ์„œ๋ฒ„ ์ฐพ์„ ์ˆ˜ ์—†์„ ๋•Œ
    response.writeHead(404);
    response.end('Not found');
  }




});
app.listen(3000);

readdir.js๋กœ ํด๋” ์•ˆ์˜ ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ถˆ๋Ÿฌ์™€์„œ while ๋ฌธ์œผ๋กœ ํŒŒ์ผ ์ด๋ฆ„์„ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋Œ€๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์›นํŽ˜์ด์ง€์— ๋กœ๋“œ!

์ƒˆ๋กœ ์ถ”๊ฐ€ํ•œ ํŒŒ์ผ๋„ ๋ฐ”๋กœ ์ ์šฉ ๊ฐ€๋Šฅ!

์ƒ์„ฑํ•˜๋Š” ํŒŒ์ผ ๋ชฉ๋ก๋งŒํผ ๋™์ ์œผ๋กœ ๊ณ„์† ๊ธ€๋ชฉ๋ก ์ƒ๊ฒจ๋‚˜๋Š” ๊ฒƒ ํ™•์ธ.