세리프 따라잡기

nodejs에서 파일을 읽는 기능 정리, 자바 스크립트 중요 문법 3가지, 콘솔 입력값에 대해 본문

Node.js

nodejs에서 파일을 읽는 기능 정리, 자바 스크립트 중요 문법 3가지, 콘솔 입력값에 대해

맑은 고딕 2021. 1. 1. 23:38

5. 파일을 바루는 방법 및 실습

정보시스템에 핵심적인 메커니즘을 CRUD(Create Read Update Delete: 4가지의 연산·처리가 정보를 다루는 핵심)라고 한다. 가장 중요한 것은 역시 생성(create)이고 다음으로는 읽기(read)이다. 수정(update)과 삭제(delete) 또한 많은 시스템에서 필요로 한다.

 

nodejs.org/dist/latest-v14.x/docs/api/fs.html#fs_fs_readfile_path_options_callback → nodejs로 파일을 읽는 방법에 대한 코드 [Tip. nodejs에서 앞으로 모르는 것이 있다면 nodejs 공식 홈피의 문서-본인의 nodejs version을 들어가 찾아보자!]

 

먼저 하위 폴더와 그 안에 파일과 txt 파일을 생성 후 'cd(change directory)'를 이용해 폴더 위치를 바꾼다. 제대로 바뀌었는지 확인 방법은 윈도우 기준 'dir/w' 이다. [필자 기준 ex. cd nodejs] +만약 다시 상위 폴더로 가고 싶다면, 콘솔창에 'cd ..' 라고 해주면 된다.

var fs = require('fs'); // 파일 시스템을 다룰 수 있게 하는 코드. 홈피 제시로는 const 상수를 이용하지만, 필자는 먼저 배운 변수를 사용해서 실행.
fs.readFile('sample.txt', 'utf8', function(err, data){ // 파일을 읽게 해주는 코드. utf8을 이용해 처리할 수 있는 형태로 변경해줌.
    console.log(data);
}); // sample.txt 에 적힌 문장이 출력된다.

6. 쿼리 스트링의 값에 따라 본문이 변경되는 웹 만들어보기

  • 새로 폴더(data라고 칭했다.)와 파일(기존 파일수와 동일하게: 3개)을 만들고, 기존 html 파일로 만든 html, css, javascript 내의 <p></p>의 문단을 각 파일에 맞게 복붙한다. 그리고 이를 다루는 main.js 파일을 수정.
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') {
    response.writeHead(404);
    response.end();
    return;
  }
  response.writeHead(200);
  fs.readFile(`data/${querydata.id}`, 'utf8', function (err, description) { //파일 읽을 경로를 적어주고 아래에 적혀있던 template 부분을 끌어서 {}안에 넣어준다.
    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>
    `; // 문단(본문)에 해당하는 부분은 앞서 적은 ${description}을 이용해 바꿔준다.
    response.end(template);
  })


});
app.listen(3000); //결과는 이전과 같이 잘 동작. 이때 data폴더의 값을 수정하더라도 다시 노드한테 명령할 필요가 없다. 이 안에 있는 건 실시간으로 읽어 반영해주기 때문. main.js를 수정할 경우에만 껏다가 켜야함.

7. 자바 스크립트의 중요한 문법 3가지에 대해

  1. Boolean datatype
  2. Comparison operator (비교 연산자)
  3. Conditional statement (조건문)

이 3가지는 밀접한 관계에 있기 때문에, 항상 같이 생각해봐야 한다.

  • boolean : true, false의 2개의 데이터타입으로 이루어짐.
console.log(true);
console.log(false); // boolean의 2개의 데이터타입인 true와 false
true=1; // 에러가 뜬다. true는 불리언의 데이터타입 중 하나기 때문에 변수의 이름으로 지정할 수 없기 때문이다.
  • comparison

 

console.log(1+1); // 2, 이항 연산자. 이는 console.log(2); 와 같다.
console.log(1==1); // 1과 1이 같냐고 묻고, 맞다면 true, 틀리면 false가 나온다. 결과값은 당연 true.
console.log(1==2); // false가 나온다. 비교 연산자: 좌항과 우항을 비교한다.
console.log(1>2); // false
console.log(1<2); // true
console.log(1===true); // ===를 3번 쓰면 정확하게 같은 지를 물어본다. ==의 같냐?를 물어본다면 3개를 쓰는 것을 추천.
  • conditional 기본 조건에 대해 if문 활용 ver.
console.log('a');
console.log('b');
if(true){
console.log('c1');
} // 어떤 경우는 c1, 어떤 경우는 c2 출력하고자 한다면 if(조건문)를 이용한다. 불리언을 사용하기 때문에 들어가는 건 참, 거짓.
if(false){
console.log('c2');
} // 1번째 조건이 참이므로 실행, 2번째는 거짓이기 때문에 실행되지 않음.
console.log('d'); // 조건 기본 1
  • if else 활용 ver.
console.log('a');
console.log('b');
if(true){ // 이 부분을 false로 바꾼다면 else 부분이 참이 되어 c2가 출력된다.
console.log('c1');
} else {
console.log('c2');
} // if(false) 와 같다.
console.log('d'); // 조건 기본 1을 더 간편하게 바꾼 것.

8. 콘솔에서 입력값

stackoverflow.com/questions/4351521/how-do-i-pass-command-line-arguments-to-a-node-js-program 콘솔에 parameters 입력 시키는 방법 검색. [ 문법: var args = process.argv; ]

var args = process.argv; // console input parameters
console.log(args); // 출력값은 args 변수 안의 정보인 배열 형식이 나옴. 콘솔창에 부를때 node (파일명).js gothic 이라고 하면 배열의 나열과 함께 끝에 'gothic' 이라고 나옴. 이는 nodejs에서 0번째(컴퓨터는 0부터 센다.) 출력줄은 nodejs 런타임이 어디에 위치했는지 의 정보를, 1번째는 실행시킨 경로를 제공, 2번째 줄부터는 입력값을 주도록 되어있기 때문.
console.log('a');
console.log('b');
if(true){
console.log('c1');
} else {
console.log('c2');
}
console.log('d');
  • 코드 수정 및 최종
var args = process.argv;
console.log(args[2]); // 이렇게 하면 node (파일명).js gothic에 입력한 gothic 값이 args[2]가 된다.
console.log('a');
console.log('b');
if (args[2] === '1') { // 콘솔창에 node (파일명).js 1 이라고 입력시키면 c1이 출력, 1이 아닌 다른 것이면 c2 출력.
    console.log('c1');
} else {
    console.log('c2');
}
console.log('d');

 

Comments