2016-11-25 1 views
0

나는 악셀 Rauschmayer에 의해 this article를 읽고, 특히 다음과 같은 sentencs에 대해 궁금 :commonjs의 "원래 내보내기 개체"는 무엇을 의미합니까?

Node.js를 스타일 단일 값 수출이 작동하지 않습니다. Node.js에서 다음과 같이 module.exports = function() {...} 모듈 대신에 단일 값을 내 보내면 을 내보낼 수 있습니다. 모듈 A에서이 작업을 수행하면 내 보낸 B의 변수 a가 여전히 일 때 A의 원래 내보내기 객체를 참조하기 때문에 모듈 B에서 함수가 작동합니다.

"A의 원래 내보내기 개체"는 무엇을 의미합니까 ??

+0

해당 문장에서 NodeJS가 아닌 CommonJS 시스템을 가리키며 원본 내보내기 개체는 'module.exports = function {...}'을 (를) 덮어 쓰려고 시도한 개체입니다. 즉,'B'에서 'A'를 가져 오면 그 모듈을 'A'의 'module.exports'속성에 * 지정하지 않으면 그 함수를 가져올 수 없습니다. NodeJS에서는'module.exports'가 있으면 그 값을 직접 얻을 수 있습니다. 댓글에 대해 @squint –

+0

감사합니다. 'export'와 관련하여 Nodejs와 CommonJS 사이에 차이점이 있습니까? 그러나'Node.js에서 다음과 같이 객체 대신에 단일 값을 내보낼 수 있습니다 : module.exports = function() {...} 모듈 A에서 그렇게했다면, 모듈 B에서 내 보낸 함수' – Blake

+0

죄송합니다. 위의 제 의견에서 약간 벗어난 것 같습니다. 주기적인 의존성을 말하는 것이지요. 그래서 나는 그들이 당신이 그 상황에서 수입하게 될 것에 한계가있을 것이라고 말하고 있다고 생각합니다. 그래서 만약 module.exports를 B에서 B를 가져온 A의 값으로 덮어 쓰면 B는 A에서 덮어 쓰기 된'exports' 값에 접근 할 수 없을 것입니다. 왜냐하면 B는 * 전에 *로드 되었기 때문입니다 덮어 쓰기가 발생하여 덮어 쓰기 된 값 대신 'module.exports' (원래 객체)의 원래 값을 얻습니다. –

답변

0

commonjs (node.js)의 각 모듈은 모듈 시스템에서 작성한 기본값 exports object을 내 보냅니다.이 모듈은 빈 객체로 간주 할 수 있습니다 (실제로는 비어 있지 않지만).

작성자는이 기본 내보내기 개체를 original exports object이라고했습니다.

+0

왜 이런 식으로'module.exports = function() {...}'이 작동하지 않습니까 ?? – Blake

관련 문제