Node.js - 내장 모듈
안녕하세요, 야심 찬 프로그래머 여러분! 오늘 우리는 Node.js와 그 내장 모듈의 세계로 흥미로운 여정을 떠납니다. 여러분의 친절한 이웃 컴퓨터 교사로서, 이 모험을 안내해 드리는 것을 기쁘게 생각합니다. 프로그래밍에 새로운 사람이라면 걱정하지 마세요 - 우리는 기본에서 시작하여 차례대로 올라갈 것입니다. 그러니 커피 한 잔 (또는 여러분의 좋아하는 음료)을 손에 들고, 함께 들어보겠습니다!
내장 모듈이란?
시작하기 전에, 내장 모듈이 무엇인지 이해해 보겠습니다. 새로운 아파트로 이사할 때, 도착하면 집주인이 이미 냉장고, 가스레인지, 세탁기 등 필수 가전제품을 설치해 두어 있을 것입니다. 이 것들은 Node.js의 내장 모듈과 같습니다 - Node.js에 미리 설치된 준비된 도구들로, 여러분이 직접 만들 필요 없이 사용할 수 있습니다.
내장 모듈이 중요한 이유
내장 모듈은 Node.js 개발의 중추입니다. 이 모듈들은 거의 모든 프로젝트에서 사용할 기본 기능을 제공합니다. 이 모듈들을 배우는 것은 도구 상자의 기본 도구를 배우는 것과 같습니다 - 한 번 숙지하면 다양한 작업을 처리할 준비가 됩니다!
일반 내장 모듈
Node.js에서 가장 흔히 사용되는 내장 모듈을 몇 가지 탐구해 보겠습니다:
1. 파일 시스템 (fs) 모듈
파일 시스템 모듈은 파일을 읽고 쓰고 관리할 수 있는 개인 비서와 같습니다. 실제로 보겠습니다:
const fs = require('fs');
// 파일 읽기
fs.readFile('hello.txt', 'utf8', (err, data) => {
if (err) {
console.error('Oops! 파일 읽는 중 오류:', err);
return;
}
console.log('파일 내용:', data);
});
// 파일 쓰기
fs.writeFile('goodbye.txt', 'Goodbye, World!', (err) => {
if (err) {
console.error('Oops! 파일 쓰는 중 오류:', err);
return;
}
console.log('파일 성공적으로 쓰였습니다!');
});
이 예제에서 우리는 먼저 'hello.txt' 파일을 읽습니다. readFile
함수는 파일 이름, 인코딩 (utf8인 경우), 그리고 파일이 읽힌 후 실행되는 콜백 함수를 세 개의 인자로 받습니다. 오류가 있으면 로그를 남기고, 그렇지 않으면 파일 내용을 출력합니다.
다음으로, 우리는 "Goodbye, World!"를 새 파일 'goodbye.txt'에 씁니다. 다시 콜백 함수를 사용하여 잠재적인 오류나 성공을 처리합니다.
2. HTTP 모듈
HTTP 모듈은 웹 서버를 만들고 HTTP 요청을 보내는 티켓입니다. 인터넷의 교통 관제자처럼입니다! 간단한 웹 서버를 만들어 보겠습니다:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World! Welcome to my server!');
});
server.listen(3000, 'localhost', () => {
console.log('Server running at http://localhost:3000/');
});
이 코드는 포트 3000에서 서버를 리스닝합니다. 누군가가 http://localhost:3000/를 방문하면, 그들은 "Hello, World! Welcome to my server!"를 볼 것입니다. 인터넷에서 레몬ADE를 차리는 것과 같습니다!
3. Path 모듈
Path 모듈은 파일 시스템의 정글에서 여러분의 导航 시스템입니다. 파일과 디렉토리 경로를 다루는 데 도움을 줍니다:
const path = require('path');
console.log(path.join('/home', 'user', 'documents', 'file.txt'));
// 출력: /home/user/documents/file.txt
console.log(path.resolve('folder1', 'folder2', 'file.txt'));
// 출력: /current/working/directory/folder1/folder2/file.txt
console.log(path.extname('myfile.txt'));
// 출력: .txt
join
메서드는 경로 세그먼트를 결합하고, resolve
는 절대 경로를 생성하며, extname
은 파일 확장자를 추출합니다. 파일 시스템의 GPS처럼입니다!
4. OS 모듈
OS 모듈은 운영 체제에 대한 정보를 제공합니다. 컴퓨터의 X-ray vision을 가진 것과 같습니다:
const os = require('os');
console.log('CPU 아키텍처:', os.arch());
console.log('사용 가능한 메모리:', os.freemem() / 1024 / 1024, 'MB');
console.log('전체 메모리:', os.totalmem() / 1024 / 1024, 'MB');
console.log('CPU 코어 수:', os.cpus().length);
console.log('홈 디렉토리:', os.homedir());
이 코드는 여러분의 시스템의 CPU 아키텍처, 사용 가능한 메모리, CPU 코어 수, 그리고 홈 디렉토리에 대해 알려줍니다. 컴퓨터의 건강 검진을 받는 것과 같습니다!
5. Events 모듈
Events 모듈은 Node.js의 이벤트駆動 아키텍처의 핵심입니다. 도미노를 세우고 그것이 떨어지는 것을 보는 것과 같습니다:
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('이벤트가 발생했습니다!');
});
myEmitter.emit('event');
여기서 우리는 커스텀 이벤트 에미터를 만들고, 'event'에 대한 리스너를 설정한 다음, 그 이벤트를 발생시킵니다. "Marco!"라고 소리치고 "Polo!"라는 답변을 기다리는 것과 같습니다.
결론
축하합니다! 여러분은 Node.js 내장 모듈의 세계로 첫 걸음을 뗐습니다. 이 모듈들은 놀라운 애플리케이션을 만드는 데 유용한 강력한 도구들입니다. 코드를 배우는 것은 새로운 언어를 배우는 것과 같습니다 - 연습과 인내가 필요합니다. 실험하고 실수를 두려워 말아세요. 우리 모두 그렇게 배웠습니다!
마무리로, 우리가 다루었던 모듈을 요약한 표를 제공합니다:
모듈 | 설명 | 주요 메서드 |
---|---|---|
fs | 파일 시스템 연산 | readFile, writeFile |
http | 웹 서버 생성 및 HTTP 요청 | createServer, listen |
path | 파일 및 디렉토리 경로 처리 | join, resolve, extname |
os | 운영 체제 정보 제공 | arch, freemem, totalmem, cpus, homedir |
events | 이벤트 처리 및 발생 | on, emit |
계속 탐구하고, 계속 코딩하고, 가장 중요한 것은 즐겁게 하세요! 기억하세요, 모든 전문가는 초보자였습니다. 누구라도 다음 큰 앱을 쓸 수 있습니다!
Credits: Image by storyset