저는 아직까지 작업에서 commonJS의 모듈러 작성 방식을 사용하지 않고 있지만, 아직도 이 작성 방식의 소스코드나 글을 보면 가끔 내보내기나 module.exports를 보면 조금 헷갈리는 느낌이 들 때가 있습니다. . . . 초보자분들도 저와 같은 질문을 가지고 계실 거라 생각하는데, 확인해 보니 정말 많이 나오네요. . 몇 가지 기사를 읽었고, stackoverflow의 친구가 좋은 기사를 써서 여기에 기록했습니다.
사실 이 그림을 기억하고 이해하면 구별하기 쉽습니다.
이 그림은 둘의 관계를 순서대로 보여줍니다. 이해를 돕기 위해 이렇게 설명할 수 있을 것 같습니다. js 파일을 모듈화해야 할 때 노드 환경은 두 개의 변수 내보내기 및 module.exports를 파일에 삽입하고 처음에는 이 두 변수가 동일한 빈 객체입니다. 그런 다음 이 두 변수를 사용하여 일련의 작업을 수행한 후에 이것이 핵심입니다. 다른 모듈에서 참조가 필요한 후속 사용을 위해 module.exports만 반환됩니다.
여기서는 연산 간의 관계만 설명했는데 왜 두 개인가요? 네, 왜죠? module.exports가 아닌 이상 할당하고 반환하면 정상이겠죠? 수출의 포인트는? . . . 하하, 내가 이해하는 바는, 네, 언제든지 실수 없이 module.export를 사용할 수 있다는 것입니다. 하지만 매번 이렇게 쓰면 피곤해지나요:
module.exports.a = 1; module.exports.b = function() {}; module.exports.c = 'ccc';
?? 이거 :
exports.a = 1; exports.b = function() {}; exports.c = 'ccc';
수출을 하게 된 건 글을 덜 써서 더 상쾌한 거 아닌가요? . . 그런 것 같아요, 하하하, 프로그래머들은 굉장히 게으릅니다. 따라서 문제가 발생합니다. module.exports 대신 내보내기를 사용하세요. 하지만 주의하세요. 그렇지 않으면 실수를 하게 됩니다. 예를 들어:
exports = function A() {}
내보내고 싶은 클래스는 다음과 같습니다. 위의 그림을 생각해보면 반환되는 것은 module.exports입니다. 여기서 할당은 내보내기와 module.exports 간의 관계를 중단하므로 이를 인용하면 무엇을 얻게 될까요? . .
그래서 결론은 무엇입니까?
내보낼 항목을 빈 개체에 직접 확장할 수 있는 경우 내보내기를 사용하면 확실히 시간과 노력이 절약됩니다
내보내려는 내용이 빈 개체를 완전히 덮어야 하는 경우 module.exports만 사용할 수 있습니다.
혼란스러울 때는 module.exports를 사용하세요. . .