Node.js 기초 맛보기

유진·2023년 9월 5일

Node.js

목록 보기
2/8

Node.js의 기초

배경

  • 단방향 통신 위주였던 웹이 사용자와 상호작용을 하게 되면서 고성능의 javascript가 필요해지게 되고 V8엔진이 등장
  • 고성능 javascript가 실행 가능하게 되고 브라우저 외부에서 사용할 수 있도록 발전한 것이 Node.js
    => 자바스크립트를 어느 환경에서나 실행할 수 있게 해주는 실행기


특징

  • 크로스 플랫폼 실행
    ✔ 컴퓨터 프로그램, 운영 체제, 컴퓨터 언어, 프로그래밍 언어, 컴퓨터 소프트웨어 등이 여러 종류의 컴퓨터 플랫폼에서 동작할 수 있다는 것을 뜻하는 용어

  • 웹 내부에 제한 되지 않는 동작

  • 다양한 어플리케이션 개발

  • 싱글 쓰레드로 한 번에 한 가지 동작만 실행 기능하다

    장점 - 쓰레드가 늘어나지 않기 때문에 리소스 관리에 효율적이고 경쟁상태나 교착 상태의 위험이 낮음
    단점 - 쓰레드 기반의 작업들의 효율이 떨어짐 Ex) CPU 연산 작업
    => Node.js 는 비동기 동작으로 쓰레드 기반의 작업을 최소화합니다.

  • 이벤트 기반이다.

    비동기 동작의 완료를 처리하는 방법으로 비동기 방식은 특정 동작을 실행한 후, 해당 동작을 전혀 신경 쓰지 않는다.
    대신 해당 동작이 완료될 경우 실행할 함수를 미리 등록하고 비동기 동작이 완료가 되면 미리 등록된 함수를 실행한다.



Node.js API

대표적인 API (fs, path, process, console, http/https, crypto, timers, stream)

1) fs

  • 파일 시스템에 접근할 수 있도록 해주는 모듈
  • 파일 생성 & 읽기 & 쓰기
  • 디렉토리 생성 & 삭제
  • 파일 & 디렉토리 정보 읽기
  • 기타 여러 가지 파일 시스템 관련된 작업이 가능
  • 비동기적으로 파일을 읽기 위한 방법
var fs = require('fs');
														// 파일 읽기
var text = fs.readFileSync('text.txt', 'utf8');			// 동기적 읽기
console.log(text);

fs.readFile('text.txt', 'utf8', function(err, data) {	// 비동기적 읽기
    console.log(data);
});

var data = 'Hello FileSystem';							// 파일 쓰기
 
fs.writeFile('text.txt', data, 'utf8', function(err) {
    console.log('비동기적 파일 쓰기 완료');
});
 
fs.writeFileSync('text2.txt', data, 'utf8');
console.log('동기적 파일 쓰기 완료');

2) path

  • 파일과 디렉토리의 경로를 위한 모듈
  • 복잡한 파일 시스템의 경로 체계(절대 경로, 상대 경로)를 위한 모듈
const path = require('path');

path.dirname('/foo/bar/baz/asdf/quux'); 			//디렉터리 이름 반환
// '/foo/bar/baz/asdf' 

path.isAbsolute('//server');    					// 절대 경로인지 확인
// true

path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');	//경로 설정
// Returns: '/foo/bar/baz/asdf'

3) process

  • 현재 실행 중인 Node.js 프로세스 및 실행 환경에 관련된 데이터 제공
  • 환경 변수, CPU 아키텍처, 현재 Node.js 프로세스가 실행된 경로, 프로세스 ID 등의 다양한 정보 확인 가능
process.env;           // 컴퓨터 환경과 관련된 정보를 가진 객체
process.version;       // node.js의 버전
process.versions;      // node.js와 연관된 프로그램들의 버전을 가진 객체
process.arch;          // 프로세서의 아키텍처(arm/ia32/x64)
process.platform;      // 플랫폼(win32/linux/sunos/freebsd/darwin)
process.memoryUsage(); // 메모리 사용 정보를 가진 객체
process.uptime();      // 현재 프로그램이 실행된 시간
process.exit();		   // 프로세스 강제 종료

4) timers

  • 익숙한 setTimeout, setInterval이 담겨져있는 모듈
    setTimeout( 콜백함수, 밀리초 ) : 주어진 밀리초이후에 콜백 함수를 실행
    setInterval( 콜백함수, 밀리초 ) : 주어진 밀리초마다 콜백 함수를 실행
    setImmediate( 콜백함수 ) : 콜백 함수를 즉시 실행

참고자료

profile
도라에몽 암기빵

0개의 댓글