song.log

[Node.js] 파일 읽기, 파일을 이용해 본문 구현, 콘솔에서의 입력값, 홈페이지 구현 본문

DevLog/Node.js

[Node.js] 파일 읽기, 파일을 이용해 본문 구현, 콘솔에서의 입력값, 홈페이지 구현

SingaKorean 2019. 12. 19. 20:16
반응형

1. 파일 읽기

Node.js 에서 파일읽기를 익히기 위한 공식 사이트 Docs 

https://nodejs.org/docs/latest-v11.x/api/fs.html

 

<sample.txt>

Everyone's talking about Node taking over the programming world and its great advantages. While all frameworks and languages come with some benefits, it's Node.js that takes over development in enterprises. The big question is...

Why Node.js became a standard for large-scale apps?

And in this article I will give you a high-level look on this subject.

It’s hard to escape the gravitational pull of JavaScript and its ubiquity on the modern Web. While it’s been offering frameworks and libraries for creating interactive, modern interfaces for many years now, it never did deploy any backend platform that could compete with other well-established languages. Node.js, however, the cool kid on the JS block, has come to offer a viable alternative, one that has since been embraced by multiple startups and enterprises.

<fileread.js>

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

 

윈도우 키 + r > 실행창 cmd 에서 실행한 node 

여기서 기억할 것, cd .. 으로 상위 폴더로 이동 가능

 

2. 파일을 이용해 본문 구현

 

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/${title}`, '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);

 

여기서 main.js를 실행시키고 data 폴더의 본문을 가져오려면 경로에 주의해야한다.

main.js는 20191217 폴더에 들어있기 때문에 명령 프롬프트창에서 실행할 때 상위 폴더에서 노드를 디렉토리 명과 함께 실행 시켜줘야하기 때문이다. 

 

 

3. 콘솔에서의 입력값

Input - (Parameter:입력되는 정보의 형식/Argument:형식에 맞게 입력한 값)

콘솔에서 명령을 실행할 때 입력 값을 주는 것을 실행할 예정

조건문에 따라 다른 Output을 나오게끔 하는 것 

Output - 출력

 

var args = process.argv;
console.log(args);

console.log('A');
console.log('B');
if(false){
  console.log('C1');
}else{
  console.log('C2');
}
console.log('D2');

node.js는 세번째부터 입력된 값을 나타낸다고 약속

var args = process.argv;
console.log(args[2]);

console.log('A');
console.log('B');
if(args[2] === '1'){
  console.log('C1');
}else{
  console.log('C2');
}
console.log('D2');

입력된 값이 1이 맞기 때문에 C1이 출력

 

4. 홈페이지 구현

 

Web 링크를 열었을 때 나올 내용과 그 외의 링크를 눌렀을 때로 제어

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 pathname = url.parse(_url, true).pathname;
    if(pathname === '/'){
      if(queryData.id === undefined){
        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);
          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);
          response.end(template);
        });
      }
    } else {
      response.writeHead(404);
      response.end('Not found');
    }
});
app.listen(3000);

 

참조한 생활코딩 URL :

https://opentutorials.org/module/3549/21048

https://opentutorials.org/module/3549/21049

https://opentutorials.org/module/3549/21062

https://opentutorials.org/module/3549/21064

반응형
Comments