vue mastery의 컴포넌트 디자인 패턴(component-design-patterns) 강의를 학습하고 정리한 내용입니다.
디자인 패턴에 관하여
어제 한 후배한테 실무에서 디자인 패턴을 사용하냐는 질문을 들었는데,
리액트로 UI 개발하면서 컴파운트 컴포넌트 패턴은 꽤 많이 사용하였고,
Vue3로 디자인 시스템을 개발하는 지금도 headlessUI(https://headlessui.com/vue/tabs)의 패턴을 꽤 많이 참고한다.
해당 링크의 탭만 하더라도 컴파운드 컴포넌트 패턴과 렌더리스 컴포넌트 패턴을 발견할 수 있다.
디자인 패턴은 왜 필요한가?
결국 아키텍처와 클린 코드란 것은
- 서로 독립적인 작은 단위로 기능들을 나누어 잘 합성할 수 있도록 해주는 것이다.
- 잘게 나누어진 기능들을 합하여 독립적이며 기능적인 의미를 가진 모듈을 만들어내는 것이다.
궁극적인 목표는 유지보수성(디버깅 용이성)과 재사용성이다.
그리고 디자인 패턴은 컴포넌트 개발 및 관리를 의한 모범 사례/기술이다.
UI 컴포넌트라면 독립적인 기능이라 하면 prop과 렌더 함수, hooks(stateful logic)과 같은 단위를 찾을 수 있겠고,
이를 합성한 모듈은 아토믹 디자인 패턴의 각 유닛이 될 수 있겠다.
컴포넌트 디자인 패턴은
컴포넌트를 개발하면서 마주치게 되는 특정 문제를 해결하면서
소프트웨어의 유지보수성 / 재사용성을 높이는 개발을 위한 도구다.
즉 디자인 패턴은 다음과 같은 용도로 사용할 수 있다.
- 사용 및 유지 관리가 더 쉬운 컴포넌트 개발
- 컴포넌트를 버그에 취약하게 만드는 일반적인 실수 방지
- 앱에 가장 적합한 아키텍처 결정
물론 디자인 패턴이 만병통치약이 아니다.
특정 패턴을 사용하려면 당신이 속한 개발팀 내의 합의가 필요하다.
자바의 GOF에서처럼 장황하면서 자주 쓰지 않는 패턴들은 코드를 난독화한다 (--;)
- 이것들은 지침이지. 규칙이 아니다.
- 팀의 의견과 경험도 중요하다.
- 당신의 팀에 가장 적합한 것을 선택하라
때로는 많은 상황에서 잘 작동할 수 있는 기술이나 모범 사례가 실제로는 다른 상황에서 안티 패턴일 수 있다.
중요한 것은 장단점을 이해하여 애플리케이션의 기능에 가장 적절한 선택을 내리는 것이다.
Vue3 의 컴포넌트 디자인 패턴
Vue3에서 컴포넌트를 설계하는데 사용할 수 있는 방법들은 매우 다양하다.
아래의 패턴들을 적절하게 사용하여 더 나은 컴포넌트를 구축할 수 있다.
잘 보면 요새는 안쓰는 패턴들도 보인다.
특정 상황에서의 디자인 패턴 모범 사례가 실제로는 다른 상황에서 안티 패턴일 수 있음을 명심한다.
앞으로의 아티클에서 앞에서 나열한 디자인 패턴들을 알아본다.
'FrontEnd' 카테고리의 다른 글
Vue3 컴포넌트 디자인 패턴 : Slots (0) | 2022.12.22 |
---|---|
Vue3 컴포넌트 디자인 패턴 : Props (0) | 2022.12.22 |
[Vue3] Vue3은 리렌더링을 어떻게 트리거할까? (0) | 2022.12.21 |
[Storybook/ Vue3] Play 함수를 이용하여 컴포넌트 상호작용 자동화 (0) | 2022.12.19 |
[번역] Vite 플러그인 만들기 (0) | 2022.12.19 |