CSS-in-JS의 장점과 단점:
장점:
- Scoped Styling: 컴포넌트 단위로 스타일을 작성할 수 있어서 스타일 충돌을 막을 수 있다.
- Dynamic Styles: JavaScript를 이용해서 동적으로 스타일을 바꿀 수 있다. props나 state에 따라 스타일을 쉽게 조절할 수 있다.
- Maintenance: 스타일과 컴포넌트를 같은 파일에서 관리하니까 유지보수가 편리하다.
- Autoprefixing: CSS-in-JS 라이브러리들이 자동으로 벤더 프리픽스를 추가해줘서 호환성을 걱정할 필요가 없다.
- Dead Code Elimination: 사용하지 않는 스타일을 빌드 단계에서 제거해 줘서 최종 번들 크기가 줄어들 수 있다.
단점:
- Performance: 런타임에 CSS를 생성하기 때문에 성능에 영향을 줄 수 있다. 특히 큰 프로젝트에서 문제가 될 수 있다.
- Tooling: 기존 CSS 툴이나 브라우저 개발자 도구와의 호환성이 떨어질 수 있다.
- Learning Curve: 기존의 CSS를 사용하는 것보다 새로운 패러다임을 배우는 데 시간이 걸릴 수 있다.
- Overhead: 작은 프로젝트에서는 굳이 필요하지 않은 복잡성을 추가할 수 있다.
- Debugging: CSS-in-JS는 생성된 클래스 이름이 직관적이지 않아서 디버깅이 어려울 수 있다.
Presentational & Container 디자인 패턴:
Presentational 컴포넌트랑 Container 컴포넌트는 리액트 컴포넌트 디자인 패턴 중 하나다. 각자 역할이 다르다.
Presentational 컴포넌트:
- 역할: 주로 UI를 그리는 데 집중한다. 데이터나 상태 관리에는 관여하지 않는다.
- 특징: props를 받아서 렌더링만 한다. Redux나 MobX 같은 상태 관리 라이브러리에 의존하지 않는다.
Container 컴포넌트:
- 역할: 데이터와 비즈니스 로직을 처리한다. 상태 관리와 데이터를 불러오는 작업을 담당한다.
- 특징: Presentational 컴포넌트를 감싸고, 필요한 데이터와 콜백을 전달해 준다.
'coding' 카테고리의 다른 글
JavaScript만 사용하는 것과 비교해 TypeScript를 사용하는 이유, TypeScript의 동작 원리 (0) | 2024.08.03 |
---|---|
리액트 생명주기(life cycle), CSR, SSR, SSG (0) | 2024.07.06 |
Virtual DOM, key (0) | 2024.06.29 |
자바스크립트 this (0) | 2024.06.15 |
CSS - Cascading (0) | 2024.05.25 |