> 웹 프론트엔드 > JS 튜토리얼 > Node.js에서 `module.exports`와 `exports`의 차이점은 무엇이며 둘 다 사용되는 이유는 무엇입니까?

Node.js에서 `module.exports`와 `exports`의 차이점은 무엇이며 둘 다 사용되는 이유는 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-22 11:44:09
원래의
256명이 탐색했습니다.

What is the difference between `module.exports` and `exports` in Node.js, and why are both used?

Node.js의 'module.exports'와 'exports'의 차이점 탐색

Node.js 모듈 시스템에는 두 가지 주목할만한 변수는 'module.exports'와 'exports'입니다. 상호 교환 가능한 것처럼 보일 수 있지만 효과적인 모듈 개발을 위해서는 이들 간의 뉘앙스를 이해하는 것이 중요합니다.

제공된 질문에 언급된 계약을 고려하십시오.

module.exports = exports = nano = function database_module(cfg) {...}
로그인 후 복사

이 구문은 질문을 제기합니다. 'module.exports'와 'exports'의 차이점, 그리고 둘 다 사용하는 이유는 무엇인가요?

이 퍼즐을 풀려면, 모든 모듈이 다음 줄로 시작한다고 가정해 보겠습니다.

var module = new Module(...);
var exports = module.exports;
로그인 후 복사

기본적으로 'module.exports'와 'exports'는 처음에 동일한 개체를 가리킵니다. '내보내기'에 값을 할당하면 실제로는 'module.exports'가 참조하는 개체를 수정하는 것입니다.

예제 계약에서 먼저 "안전한" 접근 방식을 고려해 보겠습니다.

// Using module.exports
module.exports.a = function() {
    console.log('a');
}

module.exports.b = function() {
    console.log('b');
}
로그인 후 복사

여기서 "안전하다"는 것은 'module.exports'가 내보낸 함수를 포함하는 객체로 남아 있다는 의미입니다. 이 모듈이 필요할 때 이 개체를 얻습니다.

그러나 'exports'에 할당하는 것은 "위험"할 수 있습니다.

// Using exports
exports.a = function() {
    console.log('a');
}

exports.b = function() {
    console.log('b');
}
로그인 후 복사

'module.exports'와 'exports' 모두 처음에 동일한 객체를 가리키고 '내보내기'에 직접 할당하면 해당 참조가 중단됩니다. 결과적으로 'module.exports'는 여전히 빈 객체 {}를 가리키며, 이는 모듈이 필요할 때 반환됩니다.

'module.exports'에 생성자 함수를 할당하면 다음과 같은 결과가 발생할 수 있다는 점에 주목할 가치가 있습니다. '내보내기'의 경우와 다른 의미:

// Assigning constructor to module.exports
module.exports = function Something() {
    console.log('bla bla');
}
로그인 후 복사

이 경우 반환된 결과의 'typeof'는 'function'이 됩니다. 이를 통해 모듈을 함수로 직접 요구하고 호출할 수 있습니다.

그러나 생성자를 '내보내기'에 할당해도 동일한 효과가 없습니다.

// Assigning constructor to exports
exports = function Something() {
    console.log('bla bla');
}
로그인 후 복사

'내보내기'를 다시 할당하면, ' 'module.exports'와 생성자 함수 사이의 연결을 끊고 'module.exports'를 빈 상태로 둡니다. object.

결론적으로 효과적인 Node.js 모듈을 개발하려면 'module.exports'와 'exports'의 미묘한 차이점을 이해하는 것이 필수적입니다. 두 변수 모두 처음에는 동일한 개체를 가리키지만 'module.exports'는 내보낸 개체를 일관되게 가리키므로 모듈에서 값을 내보내는 공식적인 방법으로 간주되어야 합니다. 반면, 내보낸 객체를 직접 수정해야 하거나 생성자 함수를 할당할 때 '내보내기'가 유용할 수 있습니다.

위 내용은 Node.js에서 `module.exports`와 `exports`의 차이점은 무엇이며 둘 다 사용되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿