파일 읽기

Leeys·2022년 2월 10일
0

생코 node.js 시리즈

목록 보기
3/15


(정보를 처리하는 핵심적인 방법 그 중 파일 읽어오기)

var fs = require('fs');
fs.readFile('sample.txt', 'utf8', function(err, data){
 console.log(data);
});

fs모듈을 불러오고 readFile로
같은 디렉토리 위치에 있는 sample.txt를 읽어서 console에 띄움

다음은 쿼리스트링으로 값을 받아 그 값에 대응하는 파일을 띄우는 코드이다.

var http = require('http');
var fs = require('fs');
var url = require('url');
 
var app = http.createServer(function(request,response){
    var _url = request.url;
    var queryData = url.parse(_url, true).query;
    var title = queryData.id;
    if(_url == '/'){
      title = 'Welcome';
    }
    if(_url == '/favicon.ico'){
      return response.writeHead(404);
    }
    response.writeHead(200);
    fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description {
      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.end(template);
    })
 
 
});
app.listen(3000);

fs.readFile 함수안에서 사용자가 보낸 id에 맞는 txt파일을 불러오고 discrpition 변수에 저장하는 것 같다. 특이한 것은 readFile은 id에 맞는 데이터를 변수에 저장하는 역할만 하고 함수 종료후에 밖에서 response를 보낼 줄 알았는데 readFile함수 안에서 response를 보낸다. 그 요청에 대한 정보처리가 끝남과 동시에 바로 response를 하기 때문에 더 간결한 것 같기도 하다. = 동적인 느낌? 하나의 페이지 안에서 요청마다 따로 reponse를 하니까
쿼리 데이터를 변경해서 요청할 때 마다 node에서 파일을 읽어오기 때문에 파일 수정시에 서버를 재가동 하지 않아도 잘 작동한다.


이렇게 디렉토리를 읽어서 안에 있는 파일들을 리스트로 받아와 사용할 수 있다.

profile
공부 리마인드

0개의 댓글

관련 채용 정보