Node.js는 Chrome V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경(Runtime Environment)으로 주로 서버 사이드 애플리케이션 개발에 사용되는 소프트웨어 플랫폼이다.
브라우저 외부 환경에서 자바스크립트 애플리케이션 개발에 사용되며 이에 필요한 모듈, 파일 시스템, HTTP 등 Built-in API를 제공한다.
Node.js는 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 Request 처리 성능을 가지고 있다.
데이터를 실시간 처리하여 빈번한 I/O가 발생하는 SPA(Single Page Application)에 적합하다.
(CPU 사용률이 높은 애플리케이션에 권장X)
Node.js에는 Socket.io라는 실시간 통신을 실현하는 라이브러리를 사용할 수 있어서 대량의 데이터 처리와 실시간 통신을 구현할 수 기능
터미널을 이용하여 node.js에서 자바스크립트 파일을 실행시켜보고, node.js가 기본적으로 제공하는 common.js라는 모듈시스템을 사용하는 것을 공부하였다.
clac.js
에 있는 함수를 index.js
에서 쓰려면 index.js
로 모듈을 내보내기 작업을 해줘야함
기능을 갖는 분리된 파일 각각을 모듈이라고 한다.
즉 calc.js
는 계산기능을 담당하는 분리된 모듈
clac.js
에서 내보낸 모듈을 require라는 키워드에 경로(./)를 명시하면서 불러와서 출력을하면 내보낸 파일이 그대로 index.js
에서 출력됨
즉, node.js에서 module.exports로 내보낸 모듈을 경로(./)와 reqire라는 내장함수를 이용하여 가져와서 사용할 수 있다.
조심해야 할 것은, reqire라는 내장함수와 module.export라는 내장함수는 node.js에 있는 내장함수이기 때문에 바닐라js에서는 사용이 불가능하다
이제 물러왔으니 사용을 해보자
이렇게 module.exports로 내보내고 내보낸 모듈을 경로(./)와 reqire로 명시해서 불러오는 이런 모듈시스템은 node.js가 기본적으로 제공하는 모듈시스템인 CommonJS라는 모듈시스템이다.
이 CommonJS말고도 es모듈이라는 모듈시스템이 존재한다.
모듈시스템은 모듈을 내보낼 수 있고, 불러와서 사용할 수 있는 그런 함수같은 기능을 제공하는 시스템이라고 생각하면 된다.
중요한 것은, node.js에서 모듈단위로 데이터를 내보내고 받아와서 사용할 수 있다는 점만 기억하기