본문 바로가기

Back-End/Node.js

Node.js.19.2.App 제작-홈페이지 구현

반응형

현재 다른 목록을 누르면 화면이 잘 뜨지만, 홈 화면에서는 undefined가 뜬다. 아직 홈에 대한 처리를 주지 않았기 때문이다.

    *undefined: 제목과 본문이 없음

홈일 때(http://localhost:3000/)와 페이지로 갔을 때(http://localhost:3000/?id=HTML)도 특별한 경로가 붙어있지 않기 떄문에 pathname은 둘 다 똑같이 '/'인 상태이다. 즉, 홈과 각 페이지를 구분할 수 없다는 의미다.

반복문을 중첩해서 사용하는 것을 통해 이 둘을 구분해보자. (목표)

 


 

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){
        //description을 불러올 필요가 없음.
        // fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
          var title = 'Welcome';
          var description = 'Hello, Node.js';
          var template = `
          <!doctype html>
          <html>
          <head>
            <title>WEB1 - ${title}</title>
            <meta charset="utf-8">
          </head>
          <body>
            <h1><a href="/">WEB</a></h1>
            <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>
            <h2>${title}</h2>
            <p>${description}</p>
          </body>
          </html>
          `;
        response.writeHead(200);  //200: 파일을 성공적으로 전송하였음
        response.end(template);
      // });
      }else {
        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>
            <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>
            <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);

반응형