node js의 편리하고 다양한 모듈을 사용하기 위해선 package.json을 설치해야합니다. 설치하는 방법은 프로젝트 경로에서 터미널을 열고
$ npm init
를 입력해줍니다. 그럼 아래와 같이 설정을 어떻게 할 것인지에 대해 질문하는 내용이 나오는데 별 다른 설정은 설치 이후에도 설정할 수 있기 때문에 전부 enter를 눌러 설치를 진행해 줍니다.
- 위와 같은 설정이 귀찮다면 $ npm init -y 를 사용하여 바로 설치가 가능합니다. (-y는 전부 yes로 하겠다는 의미입니다.)
파일 처리와 관련된 모듈.
node.js 에서 가장 중요하고 기초적인 모듈.
동기식과 비동기식
1) 동기식 : 프로그램이 동작하는 상태에서 완전히 해당 내용을 끝내고 다음으로 넘기는 방식, 순차적.
2) 비동기식 : 동작이 끝나지 않은 상태에서도 제어권을 넘긴 후에 프로그램을 계속 진행하는 방식.
fs 메소드(Method)
readFile(): 파일을 비동기적으로 읽음
ex) fs.readFile(filename, [options], callback)
readFileSync() : 파일을 동기적으로 읽음
ex) fs.readFileSync(filename, [options])
writeFile() : 파일을 비동기적으로 씀
ex) fs.writeFile(filename, data, [options], callback)
writeFileSync() : 파일을 동기적으로 씀
ex) fs.writeFileSync(filename, [options])
사용 방법
const fs = require('fs');
// readFile
fs.readFile('./text1.txt', 'utf-8', (err, data) => {
if(err) {
console.log(err);
} else {
console.log('비동기식으로 파일 읽기 : ' + data);
}
});
// readFileSync
const text = fs.readFileSync('./text1.txt', 'utf-8');
console.log('동기식으로 파일 읽기 : ' + text);
// writeFile
const data = "Hello Node.js!";
fs.writeFile('./text2.txt', data, 'utf-8', (err) => {
if(err) {
console.log(err);
} else {
console.log('비동기식으로 파일 저장');
}
});
// writeFileSync
fs.writeFileSync('./text3.txt', data, 'utf-8');
console.log('동기식으로 파일 저장');
http 웹 서버를 생성하는 것과 관련된 모든 기능을 담당.
http 메소드(Method)
createServer() : server 객체를 생성
writeHead() : 응답 header를 구성
end() : 응답 body를 작성
listen() : 서버를 실행하고 클라이언트를 기다림
MIME 형식
응답의 형식이 무엇인지를 Header에 포함된 MIME를 통해 브라우저에게 알려줍니다. 브라우저는 이것을 참고하여 응답을 어떻게 해석할지 알 수 있습니다.
MDN 공식문서
text/plain : 일반적인 text 파일
text/html : html 형식 파일
text/css : css 형식 파일
text/xml : xml 형식 파일
image/jpeg : jpeg 이미지 파일
image/png : png 이미지 파일
audio/mp3 : mp3 음악 파일
video/mp4 : mp4 동영상 파일
...
사용 방법
const http = require('http');
// req : 사용자 요청에 대한 정보(request)
// res : 사용자에게 응답을 하기 위한 정보(response)
const server = http.createServer((req, res) => {
res.writeHead(200, {'content-type':'text/html'});
res.end(`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HTTP 모듈 테스트</title>
</head>
<body>
<h2>HTTP 모듈 테스트</h2>
<p>Node.js http 서버</p>
</body>
</html>`);
});
server.listen(3000, () => {
console.log('3000번 포트로 서버 실행 중...');
});
터미널에서 해당 디렉토리에 경로를 두고
$ node [js 파일명]
실행 후 listen 메소드의 로그가 정상적으로 표시된걸 확인 후
브라우저에 localhost:3000 로 접속하면 요청한 HTML 문서가 뜨는걸 확인할 수 있습니다.
http 모듈만 사용해서 웹 서버를 구성하면 직접 많은 기능을 따로 개발해야하는 불편한 점이 있습니다.
때문에 간단한 코드로 웹 서버의 기능을 대부분 구현할 수 있는 express 모듈을 사용하며 미들웨어와 라우터를 이용해서 편리하게 웹 서버를 구성할 수 있습니다.
$ npm install express
express 메소드(Method)
use() : 미들웨어를 등록.
res.redirect() : 웹 페이지의 경로를 강제로 이동.
req.query.키값 : 클라이언트에서 GET 방식으로 전송한 요청 파라미터를 확인.
req.body.키값 : 클라이언트에서 POST 방식으로 전송한 요청 파라미터를 확인. (단, POST 방식을 통한 요청 파라미터를 확인하려면 body-parser와 같은 모듈을 사용해야 한다.)
사용 방법
const express = require('express');
const app = express();
app.use((req, res) => {
res.writeHead(200, {'content-type': 'text/html; charset=utf-8'});
res.end('<h2>익스프레스 서버에서 응답한 메세지입니다.</h2>');
}).listen(3000, () => {
console.log('3000번 포트로 서버 실행중...');
});