Skip to Content
Suffering builds character

2. 컴포넌트 기반 개발

컴포넌트 기반으로 페이지를 개발할 경우 일반적으로 다음의 단계를 따라 진행할 수 있음

1-1. 페이지 디자인 확인

페이지를 구현하기 전에 Figma 등을 통한 디자인 시안을 확인

1-2. 특정 기준에 의해 요소를 추출

개발자는 구현하고자 하는 특정 영역의 레이아웃을 보며, 공통적인 요소(Element)를 추출함

SubWidget
검색 창 하단에 존재하는 개별 버튼 컴포넌트

LoginBar
로그인 설명, 로그인 버튼, 아이디 찾기, 비밀번호 찾기, 회원가입 텍스트를 하나로 그룹화한 컴포넌트

요소를 추출하는 몇 가지 기준

  1. 하나로 묶어서 관리하기 용이해보이는 영역을 하나의 구성요소로 추출(그룹화)
    → LoginBar
  2. 공통적이거나 반복되는 요소를 하나의 구성요소로 추출
    → Widget, SubWidget, ProductItem, …

1-3. 추출한 단위를 기준으로 컴포넌트 구성

컴포넌트를 구성하는 가장 기본적인 요소

  1. HTML 엘리먼트
  2. HTML 엘리먼트에 적용시킬 CSS 스타일 시트
  3. HTML 엘리먼트 조작에 필요한 자바스크립트

→ HTML, CSS, JS 코드를 모아 그룹화하여 자신만의 맥락과 의미를 가진 별도의 ‘컴포넌트’를 작성하고 사용할 수 있음

또한 이런 방식으로 개발을 하였을 때 얻을 수 있는 일반적인 장점은 코드의 재사용(Reusability)을 통한 코드 중복 최소화, 유지보수의 용이함 등이 있음

컴포넌트 기반 개발 방식의 주요 관심사
컴포넌트 기반의 디자인 시스템을 구축을 통한 컴포넌트의 재사용성 증대
→ 개발 생산성 증가, 협업 효율화

1-4. 레이아웃 배치에 맞게 작성한 컴포넌트 사용

개발한 컴포넌트를 페이지에 불러와서 화면을 렌더링

<!-- index.html --> <body>     <header>         <!-- 검색 바 -->         <div class="sub-widget">             <SubWidget />             <SubWidget /> <!-- 동일한 이름으로 컴포넌트를 여러 번 호출하여 재사용 -->             <SubWidget />             <SubWidget />             <SubWidget />             <SubWidget />         </div>     </header>     <main>         <div>뉴스 목록</div>         <LoginBar />         <div class="widget-board">             <Widget />             <Widget />             <Widget />             <Widget />         </div>         <div class="shopping">             <ProductItem />             <ProductItem />             <ProductItem />             <ProductItem />             <ProductItem />             <ProductItem />         </div>     </main> </body>

컴포넌트 네이밍 규칙

  1. 컴포넌트 이름은 대문자로 시작해야함
    ex. <Widget />
  2. 소문자로 사용할 경우 HTML에서 제공하는 표준 태그와 이름이 충돌할 수 있음
    ex. <Div />, <div>div 태그</div>
  3. React에서는 PascalCase로 네이밍
    ex. <ProductItem />
Last updated on