왜 CommonJS가 Node.js 환경에서 자주 사용될까 ? #15
Unanswered
yunseorim1116
asked this question in
Q&A
Replies: 1 comment 1 reply
-
쉽게말하면 서버와 브라우저 모듈방식차이의 원인은 이렇답니다. 서버 - 모듈이 같은 컴퓨터의 node_modules 안에 존재함. 따라서 필요할때 require로 로드해도 오래걸리지 않음. nodejs의 요청은 비동기적으로 잘 처리되기 때문에 DB 요청등 지연이 많은 것에 비하면 동적으로 로딩하는게 느껴지지 않음. 브라우저 - 모듈을 처음 웹페이지를 로드할때 전부 받아옴. 필요할때마다 로드하게 되면 그때그때 네트워크 지연이 생겨서 UX가 나빠짐. 따라서 프로젝트를 번들링하여 한번에 제공함. 대신 번들사이즈가 중요하기 때문에 트리 쉐이킹이나 minify등 처리를 추가적으로 하고 싶음. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
왜 CommonJS가 Node.js 환경에서 자주 사용될까?
Node.js가 처음 개발되었을 때 ECMAScript(자바스크립트)에는 공식적인 모듈 시스템이 없었습니다.
이를 해결하기 위해 Node.js는 자체적으로 모듈을 정의하는 방식인 CommonJS를 도입했습니다.
CommonJS는 module.exports와 require()를 사용하여 모듈을 가져오고 내보낼 수 있게 했으며, 이를 통해 모듈 단위로 코드를 재사용하는 것이 가능해졌습니다.
CommonJS는 동기적 모듈 로딩을 사용합니다. 이는 서버 측에서 주로 사용되며, Node.js의 성격상 파일 시스템 데이터베이스 등 동기적 처리가 중요한 경우가 많기 때문에 CommonJS가 적합했습니다.
웹 브라우저에서는 비동기적 처리가 중요하지만 서버 환경(CommonJS)에서는 상대적으로 동기적 처리도 성능에 문제가 덜합니다.
웹 브라우저에서 비동기 처리가 중요한 이유
*입출력(I/O) 작업이란 ?
컴퓨터 시스템에서 데이터를 외부 장치와 주고받는 모든 작업을 의미
그렇다면 서버 환경은 ?
서버 환경에서는 사용자 인터페이스가 없고 멀티스레드나 비동기 I/O를 통해 여러 요청을 효율적으로 처리할 수 있기 때문에 동기적 처리도 성능에 큰 영향을 미치지 않는 경우가 많습니다. 서버는 사용자와 직접 상호작용하지 않고, 작업의 정확성과 효율성이 더 중요하기 때문입니다.
Beta Was this translation helpful? Give feedback.
All reactions