NodeJS 의 require 및 module.exports 구조 - Whitmem
NodeJS 의 require 및 module.exports 구조
Web Development
2025-04-15 20:41 게시 2275b8077d6e56339c29

0
0
22
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
NodeJS의 require 및 module.exports 구조
NodeJS 는 자바스크립트 언어를 독립적인 환경에서 사용하기 위한 엔진으로 V8 오픈소스 엔진을 차용한다. 원래 이 엔진은 크롬 브라우저와 같은 브라우저 속에 탑재되어 자바 스크립트 언어를 해석하고 동작할 수 있게끔 수행하는 용도이나, NodeJS는 이 엔진을 가져와 브라우저 없이 독립적으로 사용할 수 있게 만든 것이다.
따라서 브라우저에서 사용할 수 있는 document, window 와 같은 전역 필드는 존재하지 않으며 오직 자바 스크립트의 순수 언어 작성 용으로만 이용할 수 있다.
JavaScript 는 브라우저 처리용으로 개발된 것이기 때문에 브라우저오, 상호작용하는 요소가 빠지면 기본적인 IO 출력이 불가능하다. 우리가 단순히 이 언어를 독립적으로 분리해서 for 문만 돌리는게 목표가 아니다 보니, NodeJS 엔진에서는 이 JavaScript를 활용하여 기본적인 파일 입출력, 네트워크 입출력을 수행할 수 있도록 기본 Module들을 제공하고 있다.
그렇기 때문에 웹 브러우저에서 사용하는 JavaScript 언어 및 라이브러리에서 볼 수 없는 특이한 함수 또는 메서드들이 보이는데 대표적으로 require, module.exports 가 있다.
JavaScript. 개발자라면 알겠지만 브라우저용 Javascript 언어 기본 문법에는 require 이라는 함수가 없다. 이는 정확히 NodeJS 에서 모듈 관리를 체계적으로 수행하기 위해 자체 제공하는 함수이다.
JS 파일 로드
기본적으로 NodeJS 에서는 각 JS 파일마다 해당 영역에서 사용 가능한 module 메모리 공간과 require 함수들을 같이 넘긴다. 즉 사용자가 작성한 js 스크립트 파일을 그대로 불러와 함수안에 붙여넣는다고 보면 된다.
그러면 스크립트 공간 내에는 module, require 등의 필드, 함수가 존재하지 않아도 NodeJS가 제공한 필드로 접근하여 사용할 수 있게된다.
즉 우리가 어떤 스크립트 공간에서 클래스나 함수, 변수를 정의하고 module.exports 에 내보내면, 읽어들이는 require 측에서 사용할 수 있게 되는 것이다.
위 test.js 에서는 임의 딕셔너리를 module.exports 로 반환하는데, 이 작업은 이 파일이 실행되는 시점의 시간으로 time value 공간에 반영될 것이다.
메인 스크립트나 시작 영역에서 위 require을 수행하면 NodeJS 내부에서 test.js 의 스크립트를 내부적으로 감싸 한 번 실행할 것이다. 그리고 그 결과는 test.js에 의해 module.exports 에 기록된다. NodeJS의 require은 최종적으로 기록된 module.exports의 내용을 메인으로 넘겨주고, 최종적으로 t2에 딕셔너리 정보가 담기게 된다.
예시
상기 코드 work.js 는 콘솔에 현재 시간 정보를 출력한다.
메인에서 2번 require 한 다음, 결과를 실행한다.
콘솔이 1회만 출력되고 exports 값이 동일한 것을 확인할 수 있다. 같은 파일에 대해서는 최초 한 번만 로드되어 중복 실행되지 않는다.
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.