본문 바로가기

Back-End/Node.js

Node.js.24.App 제작-글목록 출력하기

반응형

목표

main.js의 list(<ul>속 <li>)를 23에서 배운 readdir로 글목록 출력하기

 


fs.readdir('폴더명', function(에러명, 파일리스트명) { ... }

fs.readdir('./data', function(err, filelist){

 


 

    if(pathname === '/'){
      if(queryData.id === undefined){
        fs.readdir('./data', function(err, filelist){
          console.log(filelist);
        })

 

이를 이용하여 반복문을 통해 코드를 작성한다.

// 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++;
}
list = list + '</ul>';

이를 if와 else 둘다 넣어준다.

 

전체코드

var http = require('http');
var url = require('url');
var fs = require('fs');

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(err, 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++;
          }
          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);  //200: 파일을 성공적으로 전송하였음
        response.end(template);
      });
      } else {
        fs.readdir('./data', function(err, 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++;
          }
          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);  //200: 파일을 성공적으로 전송하였음
          response.end(template);
        });
      });
    }
    }else{
      response.writeHead(404);  //404: 파일을 찾을 수 없음
      response.end('Not found');
    }
});
app.listen(3000);

 

만약 이 상태에서 폴더 data에 Nodejs 파일을 생성한 후 그 안에 내용은 lorem으로 채운다면

껐다켜지 않아도 새로고침하면 바로 자동으로 생성된다. 왜냐하면 웹 페이지를 새로 띄울 때마다 모든 파일을 다 생성하기 때문.

 

 

반응형