# [[컴포넌트 기반 아키텍처 (React, Vue 등)]] ## 📌[[ brief]] Summary 컴포넌트 기반 아키텍처는 React, Vue, Angular와 같은 현대 프론트엔드 프레임워크에서 애플리케이션을 독립적이고 재사용 가능한 UI 단위(컴포넌트)로 분할하여 구축하는 방식입니다 [1], [2], [3]. 이 아키텍처는 전통적인 전역 CSS의 한계를 극복하기 위해 스타일과 로직을 컴포넌트 단위로 결합하고 캡슐화하는 방향으로 발전했습니다 [4], [5]. 결과적으로 코드의 중복을 줄이고, 여러 팀 간의 협업을 용이하게 하며, 대규모 프로젝트의 유지보수성과 확장성을 극대화하는 것을 핵심 목적으로 합니다 [1], [6], [7]. ## 📖 Core Content * **독립성과 재사용성 (Independence and Reusability):** 모던 프론트엔드 개발에서는 버튼, 카드, 네비게이션 바 등 반복적으로 사용되는 요소들을 컴포넌트로 분리합니다 [1], [2]. 한 번 작성된 컴포넌트는 애플리케이션 내 여러 페이지에서 재사용될 수 있어 코드 중복을 방지하고 UI의 일관성을 유지하게 해줍니다 [1]. * **스타일링 캡슐화와 [[CSS-in-JS]] / [[CSS Modules]]:** 기존 CSS의 전역 스코프 문제는 컴포넌트 기반 구조에서 스타일 충돌을 일으키는 큰 단점이었습니다. 이를 해결하기 위해 스타일을 컴포넌트 단위로 캡슐화하는 CSS Modules와 CSS-in-JS 기술이 등장했습니다 [4], [5]. CSS Modules는 빌드 타임에 고유한 클래스명을 생성하여 다른 컴포넌트와의 스타일 충돌을 완벽히 차단하며 [8], [9], [10], CSS-in-JS([[styled-components]] 등)는 컴포넌트 로직과 스타일 코드를 같은 위치에 두어(co-location) 코드 이식성과 관리 편의성을 높입니다 [11], [12], [13]. * **BEM 및 단일 파일 컴포넌트 (Single-File Components)와의 시너지:** BEM(Block Element Modifier) 방법론은 컴포넌트 아키텍처와 자연스럽게 어울립니다. React나 Vue의 각 컴포넌트는 BEM의 독립적인 'Block'에 매핑되어 내부 요소들을 예측 가능하게 구조화할 수 있습니다 [14], [15]. 또한, Vue와 Svelte 프레임워크는 `