Node.js Intro
작성일 : 2024.12.06
1. Node.js 개념과 특징
- Node.js는 Chrome의 V8 JavaScript 엔진으로 만들어진 서버 사이드 플랫폼입니다.
- 비동기 이벤트 기반 구조를 가지고 있어 높은 처리 성능을 보여줍니다.
- 싱글 스레드 기반이지만 이벤트 루프를 통해 비동기 작업을 효율적으로 처리합니다.
2. Node.js의 주요 특징과 장점
- Non-blocking I/O: 비동기 처리로 대규모 네트워크 애플리케이션에 적합
- NPM(Node Package Manager): 풍부한 오픈소스 패키지 생태계 제공
- 자바스크립트 기반: 프론트엔드와 백엔드 모두 JavaScript로 개발 가능
3. 핵심 개념과 문법
A. 모듈 시스템
// 모듈 내보내기 (exports)
module.exports = {
function1: function() {},
variable1: value
};
// 모듈 가져오기 (require)
const myModule = require('./myModule');
B. 비동기 처리
// Promise 사용
function asyncFunction() {
return new Promise((resolve, reject) => {
// 비동기 작업
if (success) {
resolve(result);
} else {
reject(error);
}
});
}
// async/await 사용
async function handleData() {
try {
const result = await asyncFunction();
console.log(result);
} catch (error) {
console.error(error);
}
}
C. 이벤트 처리
const EventEmitter = require('events');
const myEmitter = new EventEmitter();
// 이벤트 리스너 등록
myEmitter.on('event', (data) => {
console.log('이벤트 발생:', data);
});
// 이벤트 발생
myEmitter.emit('event', '데이터');
4. 주요 내장 모듈
A. File System (fs)
const fs = require('fs');
// 파일 읽기
fs.readFile('file.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
// 파일 쓰기
fs.writeFile('file.txt', '내용', (err) => {
if (err) throw err;
console.log('파일 저장 완료');
});
B. HTTP 모듈
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행중입니다.');
});