본문 바로가기
코딩과 알고리즘

Node.js - Part10-1. 파일 읽어 뿌려주자(2)

처음부터 시작하는 AWS와 Node.js 책자 본문 일부입니다.

https://itadventure.tistory.com/493

 

[전자책 출간!] 처음부터 시작하는 AWS와 Node.js

65 페이지 분량의 미리보기 책을 무료로 제공해드립니다 첨부파일을 다운로드하셔서 보시고 관심을 갖게 되신다면 그 때 구매하세요! 그동안 집필해본 '처음부터 시작하는 AWS와 Node.js' PDF 전자

itadventure.tistory.com

 

이번 스토리는 지난 내용에 이어 파일을 읽어 뿌려주는 부분에 대한 설명입니다.


스크립트 소스 중 변경된 부분을 살펴보겠습니다. 2번째 줄에 아래 내용이 추가되었는데요.

const fs = require('fs');

fs 상수를 선언하고 fs 모듈을 대입하는 부분입니다.
fs 모듈File System(파일 시스템) 모듈이라고 부르는데요.
파일을 읽는 기능을 내장하고 있습니다.

그리고 아래와 같이 고정으로 내용을 출력하던 부분이,

res.end('안녕! 매우 멋진 Node.js\n');

아래와 같이 바뀌었습니다. 이 부분이 파일을 실제로 읽어 출력하는 핵심 부분이지요.

fs.readFile('.' + req.url, function(err, data) {
  res.write(data);
  res.end();
});

하나씩 뜯어보도록 합시다.
fs 모듈은 여러가지 기능이 있는데요.
그 중 파일의 내용을 읽는 방법은 아래와 같습니다.

fs.readFile(‘파일명’, 파일을읽은후실행되는콜백함수);


스크립트에서는 req.url 이란 게 사용되었군요. req.url 은 무엇일까요?

fs.readFile('.' + req.url, 콜백함수);


req
request의 약어로 사용자의 웹 브라우저 요청에 관련된 정보를 담고 있는데요.
req.url은 웹 브라우저의 URL 주소중 퍼블릭IP:8080을 제외한 뒷부분 주소를 받아옵니다.
/puppy.html 부분 말이지요.

‘.’ + req.url 이란 해석하면 따옴표로 묶은 점(.)기호 뒤에 req.url 즉, /puppy.html 을 붙이는 것을 의미하는데요. 이와 같이 문자나 문장끼리 덧셈 기호를 사용하는 경우 이어 붙이기 기능이 발휘가 된다는 사실에 주목해 주세요. 결국 ./puppy.html 이란 결과물이 나옵니다.
이러한 문장은 대다수의 컴퓨터언어에서 문자열(String)이라 부르고 따옴표를 포함해 표기합니다. 이 책자도 동일한 표기법을 따르도록 하겠습니다.


💎 Tip : 자바스크립트에서는 문자열(String) 타입은 있지만 문자(char) 타입은 없습니다.
작은 따옴표를 사용해도 문자열이고, 겹 따옴표를 사용해도 문자열입니다.
자바, C, C++ 등의 언어를 사용하시는 분은 혼동하실 수 있어 메모해 드립니다.


결국 아래 스크립트는

fs.readFile('.' + req.url, 콜백함수);


아래로 해석됩니다. 현재 폴더의 puppy.html 파일을 읽고,
콜백함수를 실행하겠다는 것이지요.

fs.readFile("./puppy.html", 콜백함수);


콜백함수 부분은 아래와 같이 구성되었는데요.

function(err, data) {
    res.write(data);
    res.end();
 }


(err, data) 2개의 파라미터가 중괄호 안쪽 {…} 코드 블럭으로 전달됩니다.
이 때 err 파라미터에는 오류코드가, data 파라미터에는 파일의 본문 내용이 전달됩니다.

함수 내부의 첫번째 줄은 파일에서 읽은 본문 내용을 그대로 출력하는 부분이 실행되는데요.

res.write(data);

앞에서 사용했던 res.end 와 다른 건 출력 후 페이지 출력를 끝내지 않는 것입니다.
연속해서 출력할 때 사용하지요.

그리고 함수 내부 두번째 줄은 단독으로 res.end()만 사용되었는데요,
더 이상 출력없이 페이지 로딩을 끝낼 때 사용합니다.

res.end();

그래서 결국 아래와 같은 페이지가 보여지는 것이지요.


방문해주시는 모든 분들께 늘 감사드립니다.

도움이 되셨다면 공감 한방, 댓글은 굿잡!
감사합니다~

\


다음 이야기 : https://itadventure.tistory.com/506

 

Node.js - Part 10-2. 페이지는 계속 추가할 수 있어요

처음부터 시작하는 AWS와 Node.js 책자 본문 일부입니다. https://itadventure.tistory.com/493 [전자책 출간!] 처음부터 시작하는 AWS와 Node.js 65 페이지 분량의 미리보기 책을 무료로 제공해드립니다 첨부파..

itadventure.tistory.com