Node.js에서 JavaScript 파일은 실행되기 전에 모듈 래퍼 함수로 감싸진다. 이 함수는 모듈별 스코프를 제공하여 하나의 모듈에서 선언된 변수나 함수가 다른 모듈에서 접근되지 않도록 하고, 전역 스코프 오염을 방지하는 역할을 한다.
모듈 래퍼 함수는 다음과 같은 형태로 제공된다:
(function(exports, require, module, __filename, __dirname) {
// 모듈 코드가 실제로 여기에 위치한다.
});
이 함수는 Node.js가 자동으로 코드 주변을 감싸며, 다음과 같은 인자를 제공한다:
exports
:module.exports
의 참조로, 모듈에서 함수나 객체를 내보내는 데 사용된다.require
: 다른 모듈을 불러오는 함수이다.module
: 현재 모듈을 나타내는 객체로, 모듈에서 함수나 객체를 내보내는 데 사용된다.__filename
: 실행 중인 파일의 절대 경로이다.__dirname
: 현재 모듈의 디렉터리 이름이다.
이 래퍼 함수는 모듈에서 정의된 변수가 해당 모듈에만 스코프가 적용되도록 하여 전역 변수로 노출되지 않게 보장한다.
사용 예시 코드
다음은 모듈 래퍼 함수의 동작 방식을 설명하는 간단한 코드 예시이다:
example.js 파일:
console.log(__filename); // 현재 파일의 절대 경로 출력
console.log(__dirname); // 현재 디렉터리의 경로 출력
function sayHello(name) {
console.log(`Hello, ${name}!`);
}
module.exports = sayHello;
이 코드는 실제로 다음과 같이 Node.js가 실행할 때 감싸져 실행된다:
(function(exports, require, module, __filename, __dirname) {
console.log(__filename);
console.log(__dirname);
function sayHello(name) {
console.log(`Hello, ${name}!`);
}
module.exports = sayHello;
});
이 래퍼 함수 덕분에 sayHello
함수는 example.js
파일 내에서만 스코프가 유지되며, module.exports
를 통해서만 외부로 내보낼 수 있다.
'공부' 카테고리의 다른 글
[Jenkins] 워크스페이스 동기화 (0) | 2024.11.20 |
---|---|
[Jenkins] Pipeline 코드에서 사용할 수 있는 리눅스 명령어 (0) | 2024.11.20 |
[Jenkins] Freestyle과 Pipeline (1) | 2024.11.19 |
AWS S3 개념 (2) 오브젝트 (1) | 2024.09.15 |
AWS S3 개념 (1) (0) | 2024.09.15 |