일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 프로토타입
- CDD
- 계산기
- cta button
- condestates
- 코드스테이츠
- WAI-ARIA
- 프론트엔드
- css in js
- codestate
- JS
- self reliance
- 개발자
- html
- codestates
- 회고
- Router
- JavaScript
- Javascript #코드스테이츠
- 호스트인식
- OOP
- 원시자료형
- 코드스테이스
- cta버튼
- Prototype
- 자바스크립트
- css
- frontend
- 참조자료형
- 객체지향
- Today
- Total
jh.nrtv
[JavaScript] 'Node.js는 모듈화를 통한 캡슐화를 지향한다' 의 의미?( 응집도, 결합도, CommonJS ) 본문
[JavaScript] 'Node.js는 모듈화를 통한 캡슐화를 지향한다' 의 의미?( 응집도, 결합도, CommonJS )
wlgus3 2023. 12. 1. 00:50✅ 들어가며
공부를 하다보면 자주 보이는 'Node.js는 모듈화를 통한 캡슐화를 지향한다'라는 말이 있는데 이게 무슨 의미일까?
이번 기회에 찾아보고 정리해보고자 한다.
( 특히나 MSA, Nest 등의 키워드 검색시 관련 개념이 자주 보인다. )
✅ 모듈화
모듈화는 기능을 단위로 분리하는 개념이다. 모듈화는 큰 규모의 코드를 작은 단위로 분리하여 각각의 모듈로 구성하는 것을 의미한다. 각 모듈은 특정 기능이나 역할을 수행하며, 독립적으로 동작할 수 있습니다. 모듈화를 통해 코드는 기능 단위로 분리되어 관리되므로, 코드의 구조가 명확해지고 유지보수가 용이해진다.
모듈화는 코드의 재사용성을 높이고 중복을 줄여주는 장점을 가지며, 코드의 응집도를 높이고 결합도를 낮추어 유지보수를 편리하게 만들어준다. 또한, 팀 작업 시에도 모듈 단위로 작업을 나누어 병렬적으로 개발할 수 있게 한다.
Node.js에서는 CommonJS 형식의 모듈 시스템을 사용하여 모듈화를 구현할 수 있다. 모듈을 사용하여 코드를 캡슐화하면 외부로부터의 불필요한 접근을 제한하고, 모듈 내부의 상태와 함수를 보호할 수 있다.
✅ 캡슐화
캡슐화는 외부와 내부를 분리하고 가리는 개념이다. 모듈을 사용하여 코드를 캡슐화하면 모듈의 내부 상태와 함수가 외부로부터 감춰지고, 외부에서 직접적으로 접근할 수 없게 된다.
캡슐화는 정보 은닉(Information Hiding)의 한 형태로 볼 수 있다. 내부의 구현 세부 사항을 외부로부터 감추고, 모듈은 자체적인 상태와 동작을 갖게 되며 외부에는 필요한 인터페이스만 노출시킴으로써 모듈의 내부 동작을 보호하고, 외부로부터의 불필요한 접근을 제한하는 것이다.
즉 모듈화를 통해서 기능단위로 코드를 분리함으로써 유지보수성과 재사용성을 높임과 동시에, 모듈화를 통한 캡슐화를 통해서 내부 상태와 함수를 보호한다는 Node.js의 주요 개념이다.
🔸 모듈화가 '코드의 응집도를 높이고 결합도를 낮춘다'의 의미
응집도(Cohesion)는 모듈 내부의 요소들이 서로 얼마나 밀접하게 연관되어 있는지를 나타내는 개념이다. 높은 응집도를 가진 모듈은 동일한 목적을 가진 요소들이 모여있고, 모듈 내부의 요소들 사이의 관련성이 강하다. 이는 모듈이 자체적으로 독립적인 기능을 제공하며, 모듈 내부의 코드가 서로 의존성이 낮고 일관성을 가지는 것을 의미.
결합도(Coupling)는 모듈 사이의 의존성을 나타내는 개념. 낮은 결합도를 가진 모듈은 다른 모듈과의 상호작용이 적으며, 모듈 간의 의존성이 낮다. 모듈 간에 서로 느슨하게 결합되어 있으면, 한 모듈을 변경하더라도 다른 모듈에 영향을 최소화할 수 있다.
이는 모듈의 독립성과 재사용성을 높이며, 전체 시스템의 유연성과 확장성을 향상.
따라서, 응집도를 높이고 결합도를 낮추는 것은 모듈화와 관련하여 중요한 목표이며 이를 통해 코드의 유지보수성과 재사용성을 향상시킬 수 있다.
🔸 CommonJS vs ECMAscript
CommonJS와 ECMAScript는 JavaScript의 모듈 시스템에 대한 두 가지 다른 정의이다.
CommonJS는 서버 사이드 JavaScript 환경에서 모듈 시스템을 구현하기 위해 만들어진 표준이다. CommonJS는 모듈을 동기적으로 로드하여 사용하는 방식을 채택하고 있으며 이는 Node.js와 같은 서버 사이드 환경에서 모듈을 사용할 때 유용하다. CommonJS 모듈은 require() 함수를 사용하여 다른 모듈을 로드하고, module.exports 객체를 통해 모듈의 기능을 내보낸다.
ECMAScript는 비동기적으로 모듈을 로드한다. 또한 import와 export 키워드를 사용하여 모듈을 로드하고, 내보낸다.
참조
https://www.daleseo.com/js-module-require/
'javascript' 카테고리의 다른 글
전역객체(Global Object)란? - 모든 변수가 전역객체의 property일까? (0) | 2024.02.18 |
---|---|
[JavsScript] Array 순회 메서드 정리 (0) | 2023.12.19 |
[JavaScript] JS의 프로퍼티(property) / instance 프로퍼티, static 프로퍼티 (0) | 2023.10.25 |
[JavaScript] HTML형식을 순수 string 형식으로 바꾸는 Javascript 코드 (0) | 2023.07.25 |
[JavaScript] JS 의 내장객체 Set (0) | 2023.04.17 |