처음부터 시작하는 AWS와 Node.js 책자 본문 일부입니다.
https://itadventure.tistory.com/493
이번 스토리는 지난 내용에 이어 파일을 읽어 뿌려주는 부분에 대한 설명입니다.
스크립트 소스 중 변경된 부분을 살펴보겠습니다. 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
'코딩과 알고리즘' 카테고리의 다른 글
그림그리는 구글 ? (5) | 2022.04.29 |
---|---|
Node.js - Part 11-2. express 프레임워크 설치 (10) | 2022.03.10 |
처음부터 시작하는 AWS와 Node.js (34) | 2022.02.16 |
node.js/자바스크립트. 14 조건문 3형식 (8) | 2022.02.09 |
NODE.JS 개념 잡기 (22) | 2022.01.03 |