리셋 되지 말자

글목록 출력하기 본문

NodeJS/생활코딩

글목록 출력하기

kyeongjun-dev 2020. 9. 9. 13:05

목록 동적 생성

이 전 게시글의 readdir을 활용해서 리스트를 동적으로 생성

  • main.js
var http = require('http');
var fs = require('fs');
var url = require('url') // url 모듈을 사용한다

var app = http.createServer(function (request, response) {
  var _url = request.url;
  var queryData = url.parse(request.url, true).query;
  var pathname = url.parse(_url, true).pathname;

  // 루트 디렉토리 (/)로부터 존재하는 페이지를 요청하면 페이지 표시
  if (pathname === '/') {
    fs.readFile('data/' + queryData.id, 'utf8', function (err, description) {
      var title = queryData.id;
      if (queryData.id === undefined) { // 없는 값을 호출하려고 하면 javascript는 undefined라고 한다.(약속)
        title = 'Welcome';
        description = 'Hello, Node.js';
      }

      fs.readdir('./data', function (error, filelist) {
        var list = '<ul>';
        for(var i=0; i<filelist.length; i++){
          list = list + `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`;
        }
        
        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.end(fs.readFileSync(__dirname + url));
        response.writeHead(200); // 200을 전송하면, 파일을 잘 전송했다고 하는 약속
        response.end(template);
      });
    });


  } else { // 없는 페이지를 요청하면 404 에러
    response.writeHead(404);
    response.end('Not found');
  }
});
app.listen(80);

fs.readdir 안에서 var list에 반복문으로 파일목록을 추가해가며 완성한 뒤, template의 <body> 안에 ${list}로 넣어준다.

 

  • 실행 결과

정상적으로 동작하는걸 확인할 수 있었다.

 

파일추가

data 디렉토리에 파일을 추가한뒤, 아무 내용을 넣고 페이지를 reload 해본다.(main.js 웹서버를 재시작하지 않는다.)

위와같이 생성 후, 새로고침

NodeJS라는 목록이 추가가 되었다. 링크로 들어가자

 

title, h, p 내용이 전부 잘 반영되는걸 확인할 수 있다.

 

웹서버를 재구동하지 않고도 파일을 추가 및 삭제할 수 있게 되었다.

'NodeJS > 생활코딩' 카테고리의 다른 글

패키지 매니저와 PM2  (0) 2020.09.09
동기&비동기  (0) 2020.09.09
파일목록 알아내기  (0) 2020.09.09
제작-홈페이지 구현  (0) 2020.09.09
Not found 오류 구현  (0) 2020.09.09
Comments