크로스 플랫폼 실행
✔ 컴퓨터 프로그램, 운영 체제, 컴퓨터 언어, 프로그래밍 언어, 컴퓨터 소프트웨어 등이 여러 종류의 컴퓨터 플랫폼에서 동작할 수 있다는 것을 뜻하는 용어
웹 내부에 제한 되지 않는 동작
다양한 어플리케이션 개발
싱글 쓰레드로 한 번에 한 가지 동작만 실행 기능하다
장점 - 쓰레드가 늘어나지 않기 때문에 리소스 관리에 효율적이고 경쟁상태나 교착 상태의 위험이 낮음
단점 - 쓰레드 기반의 작업들의 효율이 떨어짐 Ex) CPU 연산 작업
=> Node.js 는 비동기 동작으로 쓰레드 기반의 작업을 최소화합니다.
이벤트 기반이다.
비동기 동작의 완료를 처리하는 방법으로 비동기 방식은 특정 동작을 실행한 후, 해당 동작을 전혀 신경 쓰지 않는다.
대신 해당 동작이 완료될 경우 실행할 함수를 미리 등록하고 비동기 동작이 완료가 되면 미리 등록된 함수를 실행한다.
대표적인 API (fs, path, process, console, http/https, crypto, timers, stream)
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('동기적 파일 쓰기 완료');
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'
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(); // 프로세스 강제 종료