강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

2scent님의 프로필 이미지
2scent

작성한 질문수

프론트엔드 빌드 시스템 완벽 가이드 - Part.1: 모듈 시스템

CJS - Browserify로 CJS 동작 원리 이해하기

캐싱 단계 질문

해결된 질문

작성

·

105

·

수정됨

1

안녕하세요. 좋은 강의 감사합니다.

캐싱 관련해서 이해가 잘 안 되는 부분이 있어 질문드립니다.

강의에서는 modules[moduleId][0].call의 첫 번째 인자로 module.exports를 넘겨주는 것이 캐싱과 관련 있다고 설명해주셨는데요.

제가 코드를 보기엔 module.exportsthisArg로 전달되긴 하지만, 실질적인 캐싱은 함수 내부에서 세 번째 인자인 module 객체를 직접 수정하면서 (module.exports = { add };) 이뤄지는 것으로 보입니다.

즉, thisArg로 전달된 module.exports는 실제로 의미 있는 쓰임새가 없고, 캐싱은 module.exports를 직접 설정함으로써 발생하는 것 아닌가 싶은데, 혹시 제가 잘못 이해한 걸까요?

퀴즈

74%나 틀려요. 한번 도전해보세요!

CommonJS 모듈 시스템은 주로 어떤 환경을 위해 설계되었나요?

웹 브라우저

Node.js와 같은 서버 측 JavaScript 환경

React Native 모바일 환경

웹 워커 및 서비스 워커

답변 1

2

Rafael님의 프로필 이미지
Rafael
지식공유자

답변이 늦어서 죄송합니다. 질문자님 지적해주신 부분이 맞습니다. 잘못 설명했네요. module.exports call의 첫번째 는 thisArg 이기 때문에 캐싱과 관련이 없습니다. 실제 캐싱은 module.exports 를 직접 대입함으로써 이뤄집니다. 감사합니다!

2scent님의 프로필 이미지
2scent
질문자

답변 감사합니다!

2scent님의 프로필 이미지
2scent

작성한 질문수

질문하기