- 리액트
컴포넌트 재사용을 통해, 불필요한 코드 작성을 최소화 할 수 있다고 생각하여 도입하였습니다.
뷰는 프레임워크인 반면 리액트는 라이브러리이기에 개발자가 가지는 자율성을 증가시킬 수 있다고 생각하였습니다.
- Module Scss
Module Scss 통해 네이밍의 단순화와 HTML 태그를 통한 명확한 의미 전달을 할 수 있다고 생각하여 도입을 하게 되었습니다.
1) CSS의 경우, 네이밍의 중복 방지를 위해서 BEM을 사용 해야하므로, CSS 네이밍에 많은 시간이 든다는 단점이 존재하고,
2) Styled-Component 의 경우 런타임 시에 빌드가 되기에 성능 저하를 일으킬 수 있고, HTML 태그가 존재하지 않기 때문에 시맨틱함을 줄어들 수 있다고 생각하였습니다.
- TypeScript
원하는 데이터의 타입을 미리 선언함으로써 타입 불일치로 발생할 수 있는 문제들을 최소화할 수 있었습니다.
프로젝트가 고도화됨에 따라 타입의 범위를 좁혀가면서 예상할 수 없는 사이드 이팩트를 제거할 수 있었습니다.
- Redux-Toolkit
Props 드릴링을 최소화 할 필요성을 느껴 전역상태관리를 도입하고자 하였습니다.
Context API는 특정 상태가 바뀌었을때에 컴포넌트가 재렌더링 할 수 없었습니다. Redux를 통하여 이러한 문제를 해결하고 싶었습니다.
Redux를 더 단순하게 사용하고자 Redux의 경량화 버전인 Redux-ToolKit를 사용하였습니다.