1. path 모듈이란path 모듈은 파일과 디렉토리 경로를 다루기 위한 Node.js 내장 모듈입니다. 운영체제마다 경로 구분자가 다른데(Windows는 , POSIX는 /), path 모듈을 사용하면 운영체제에 관계없이 일관된 방식으로 경로를 처리할 수 있습니다.2. path 모듈 불러오기// CommonJSconst path = require('path');// ES Modulesimport path from 'node:path';3. 경로 정보 추출3.1 path.basename()경로에서 파일명을 추출합니다.const path = require('path');console.log(path.basename('/home/user/file.txt'));// file.txtconsole.log(path..
전체 글
운동을 좋아하는 8년차 웹 개발자 입니다.1. URL 모듈이란url 모듈은 URL 문자열을 파싱하고 조작하기 위한 Node.js 내장 모듈입니다. URL의 각 구성 요소(프로토콜, 호스트, 경로, 쿼리 파라미터 등)를 분리하거나 조합할 수 있습니다. Node.js는 레거시 API와 WHATWG URL API 두 가지를 제공합니다.2. URL의 구조https://user:pass@www.example.com:8080/path/page?query=value#hash │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ hash (fragment) │ │ │ ..
1. HTTP 모듈이란http 모듈은 Node.js에서 HTTP 서버와 클라이언트를 생성하기 위한 내장 모듈입니다. 별도의 웹 프레임워크 없이도 HTTP 서버를 구축할 수 있으며, Express.js 같은 프레임워크도 내부적으로 이 모듈을 기반으로 동작합니다.2. HTTP 서버 생성2.1 기본 서버const http = require('http');const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end('안녕하세요, Node.js HTTP 서버입니다!');});server.listen(3000, () => { console.log(..
1. fs 모듈이란fs(File System) 모듈은 Node.js에서 파일과 디렉토리를 다루기 위한 내장 모듈입니다. 파일 읽기, 쓰기, 삭제, 디렉토리 생성 등의 작업을 수행할 수 있으며, 동기/비동기/프로미스 세 가지 방식의 API를 제공합니다.2. fs 모듈 불러오기// CommonJSconst fs = require('fs');const fsPromises = require('fs').promises;// 또는const { readFile, writeFile } = require('fs/promises');// ES Modulesimport fs from 'node:fs';import { readFile, writeFile } from 'node:fs/promises';3. 파일 읽기3.1 비동..
1. 모듈 시스템이란모듈 시스템은 코드를 여러 파일로 분리하고 재사용할 수 있게 해주는 구조입니다. Node.js는 CommonJS와 ES Modules 두 가지 모듈 시스템을 지원합니다. 모듈화를 통해 코드의 유지보수성, 재사용성, 캡슐화를 향상시킬 수 있습니다.2. CommonJS (CJS)Node.js의 기본 모듈 시스템으로, require()와 module.exports를 사용합니다.2.1 모듈 내보내기// math.js// 방법 1: module.exports에 객체 할당module.exports = { add: (a, b) => a + b, subtract: (a, b) => a - b};// 방법 2: exports에 속성 추가exports.multiply = (a, b) => a * b..
1. async/await란async/await는 ES2017(ES8)에서 도입된 비동기 처리 문법으로, 프로미스를 기반으로 동작합니다. 비동기 코드를 마치 동기 코드처럼 작성할 수 있어 가독성이 크게 향상됩니다. async 함수는 항상 프로미스를 반환하며, await는 프로미스가 처리될 때까지 함수 실행을 일시 중지합니다.2. 기본 문법2.1 async 함수 선언// 함수 선언식async function fetchData() { return '데이터';}// 함수 표현식const fetchData = async function() { return '데이터';};// 화살표 함수const fetchData = async () => { return '데이터';};// 메서드const obj = { ..
1. 프로미스란프로미스(Promise)는 비동기 작업의 최종 완료 또는 실패를 나타내는 객체입니다. ES6(ECMAScript 2015)에서 도입되었으며, 콜백 지옥을 해결하고 비동기 코드를 더 읽기 쉽게 만들어줍니다. 프로미스는 pending(대기), fulfilled(이행), rejected(거부) 세 가지 상태를 가집니다.2. 프로미스의 기본 구조2.1 프로미스 생성const myPromise = new Promise((resolve, reject) => { // 비동기 작업 수행 const success = true; if (success) { resolve('작업 성공'); // 성공 시 resolve 호출 } else { reject(new Error('작업 실패')); //..
1. 콜백 함수란콜백 함수는 다른 함수에 인자로 전달되어 특정 시점에 호출되는 함수입니다. Node.js에서는 비동기 작업이 완료되었을 때 결과를 처리하기 위해 콜백 함수를 사용합니다. Node.js의 초기 비동기 처리 방식으로, 현재도 많은 내장 모듈에서 사용되고 있습니다.2. 콜백 함수의 기본 구조2.1 동기 콜백// 배열의 forEach는 동기 콜백const numbers = [1, 2, 3, 4, 5];numbers.forEach((num) => { console.log(num);});console.log('완료');// 출력: 1, 2, 3, 4, 5, 완료 (순차적)2.2 비동기 콜백const fs = require('fs');// fs.readFile은 비동기 콜백fs.readFile('f..
1. 비동기 프로그래밍이란비동기 프로그래밍은 특정 작업이 완료될 때까지 기다리지 않고 다음 작업을 실행하는 프로그래밍 방식입니다. Node.js는 싱글 스레드 기반으로 동작하기 때문에 비동기 프로그래밍이 필수적입니다. 파일 읽기, 네트워크 요청, 데이터베이스 쿼리 등의 I/O 작업을 비동기로 처리하여 블로킹 없이 다른 요청을 처리할 수 있습니다.2. 동기 vs 비동기 비교2.1 동기 방식const fs = require('fs');console.log('1: 시작');// 동기 방식 - 파일 읽기가 완료될 때까지 대기const data = fs.readFileSync('file.txt', 'utf8');console.log('2: 파일 내용:', data);console.log('3: 완료');// 출력..
1. 이벤트 루프란이벤트 루프는 Node.js가 단일 스레드임에도 불구하고 비동기 작업을 처리할 수 있게 해주는 핵심 메커니즘입니다. JavaScript 코드 실행, 콜백 처리, 네트워크 I/O, 타이머 등의 작업을 조율하며, Node.js의 논블로킹 I/O 모델의 근간이 됩니다.이벤트 루프는 libuv 라이브러리에 의해 구현되어 있으며, 운영체제의 커널 기능을 활용하여 효율적인 비동기 처리를 수행합니다.2. 이벤트 루프의 단계(Phases)이벤트 루프는 6개의 단계를 순환하며 실행됩니다. 각 단계는 실행할 콜백 큐를 가지고 있습니다.timers: setTimeout(), setInterval() 콜백 실행pending callbacks: 이전 루프에서 지연된 I/O 콜백 실행idle, prepare: ..
1. Node.js 버전 선택Node.js는 공식 사이트에서 두 가지 버전을 제공합니다.LTS (Long Term Support): 안정성이 검증된 장기 지원 버전으로 프로덕션 환경에 권장Current: 최신 기능이 포함된 버전으로 새로운 기능을 테스트할 때 사용일반적인 개발 및 운영 환경에서는 LTS 버전을 사용하는 것이 권장됩니다. 2024년 기준 LTS 버전은 20.x 시리즈입니다.2. 운영체제별 설치 방법2.1 WindowsNode.js 공식 사이트(https://nodejs.org)에서 Windows Installer(.msi)를 다운로드하여 설치합니다.# 설치 후 버전 확인node -vnpm -v설치 시 "Add to PATH" 옵션이 기본으로 선택되어 있어 별도의 환경 변수 설정이 필요 없습..
1. Node.js의 정의Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. 기존에 브라우저에서만 실행되던 JavaScript를 서버 사이드에서도 실행할 수 있게 해주는 환경으로, 2009년 Ryan Dahl에 의해 처음 개발되었습니다. Node.js를 사용하면 JavaScript 하나의 언어로 프론트엔드와 백엔드를 모두 개발할 수 있어 풀스택 개발의 진입 장벽을 낮춰줍니다.2. Node.js의 핵심 특징Node.js가 다른 서버 사이드 기술과 차별화되는 핵심 특징들이 있습니다.비동기 I/O (Non-blocking I/O): 파일 읽기, 데이터베이스 조회 등의 작업을 기다리지 않고 다음 작업을 처리단일 스레드 + 이벤트 루프: 하나의 스레드로 수천 개..
