[Project] React 개인 프로젝트 기술 스택 정의
Project
React 개인 프로젝트 시작 - 기술 스택 정의
React 개인 프로젝트
구현 내용
웹 어플리케이션
매일매일 먹어야 할 약 및 영양제를 나타내주는 웹 어플리케이션
구현 페이지
- 로그인
- 메인 페이지
해야하는 것
- 처음에는 기능보다는 내가 무엇을 할 것이고, 배울 것인지에 초점 맞추기, 기본에 대한 공부
- 프로젝트 하는 도중에는 어떤 어려움이 있는지, 발생한 문제에 대해 원인 파악/해결 방법까지 빠짐없이 기록
- 완료가 되고 나서는 내가 무엇을 배웠는지에 대한 회고
- 완료가 된 후에도 끝내지 않고 코드에 대한 지속 리팩토링, 기능 추가
하지말아야 할 것
- 남에게 휘둘리지 않기, 나를 믿고 묵묵히 해나가기
- 이상한 기능에 정신 팔려서 붙잡고 있지 않기
- 아직 구현 능력도 부족하므로 너무 코드 신경 써서 늦어지지 않기
기술 스택
JS Library
- React:
React를 공부 중이며 아직 하나의 JS 라이브러리도 정확하게 개념을 숙지하고 있는 상태가 아니기 때문에 React를 계속 학습하고자 한다.
또한, 학습하는 입장에서 방대한 커뮤니티와 라이브러리를 무시할 수 없다고 생각한다.
Language
- JS 먼저 구현 → TS 리팩토링 예정:
현재 JS만 학습이 된 상태이며 TS는 추후에 할 예정이다.
따라서, 먼저 JS로 구현한 후 TS를 학습하고 또 학습하는 과정에서 리팩토링을 할 예정이다.
CSS
- styled-component:
가장 많이 사용하고, 성능면에서 뛰어나며, PostCSS로 모듈화하여 사용했었고, styled도 사용했었지만,
styled는 css만 알아도 굉장히 직관적으로 느껴졌고, 로직 또한 작성할 수 있는 강력한 장점을 가지고 가고 싶다.
개발 환경 설정
- Webpack:
번들러 개념에 대한 이해가 매우 부족한 상태이다.
따라서, 개념을 공부하고, 크지 않은 앱이지만 CRA에만 의존하지 않고 Webpack 설정을 시작해보고 싶다. - babel:
트랜스파일러에 대한 정확한 역할을 알지 못하는 것 같다.
아직 무엇을 모르고, 무엇을 아는지 모르는 상태이다.
그저 babel은 ES6 문법을 ES5로 변환해주어 크로스 브라우징을 지원한다는 것 밖에 알지 못한다.
따라서, babel 또한 CRA에 의존하여 아무 학습없이 끝내고 싶지 않아서 개념에 대해 공부하고, 설정을 처음부터 하기로 한다. - Prettier:
Formatter 설정 학습 - ESLint:
문법 검사 툴 설정 학습 - 추후 TS 세팅
상태 관리
- Redux:
아직 Redux 디자인 패턴(flux)에 익숙해진 것이 아닌데 다른 상태관리를 배워 라이브러리들을 얕게 배우는 것보다 Redux saga를 사용해보면서 기본기를 쌓고 싶다.
추후에 Recoil을 사용해보거나 React query 등을 사용했을 때 Redux가 어떤 장점이 있었고, 단점이 있었는지를 좀 더 정확하게 판단할 수 있으면 좋을 것 이라 생각한다. - Redux-saga:
redux middleware로 thunk만 사용했었는데, 더 강력한 기능을 제공하는 generator 기반 saga를 학습해보고 싶다.
generator에 대한 개념 또한 이론만이 아닌 실전으로 체득하고 싶다.
백엔드
- firebase:
서비스를 만들고자 하는 시간 대비 서버 구축을 한다면 러닝 커브가 너무 길어져 서비스 완성이 늦어질 것이라고 판단하여 firebase를 사용하고자 한다.
디자인 패턴
- MVVM:
MVVM 디자인 패턴에 대해 좀 더 이해하고자 한다. View(UI)의 재사용성을 높일 수 있도록 하고, Redux를 이용해 M을 구현하는 등 최대한 MVVM을 이해하고자 한다. - Container-Presenter Pattern:
리액트에서 자주 사용하는 패턴인 Container Presenter 개념을 이해하고자 한다. - atomic design:
폴더 구조를 아토믹 디자인에 기반하여 작성하고자 한다.
Component를 쪼개고, 구성하는 데에 시간이 오래 걸릴 것으로 예상되지만, 구조를 확인하기 좋고, 컴포넌트 재사용성을 높일 수 있다고 생각한다.
테스트
- TDD 적용:
TDD 도입을 하여 Test 코드를 작성해본 적이 없어 학습하려고 한다. 하지만, 우선순위를 조금 미루고자 한다.(Webpack, TS, redux saga 학습 및 아직 부족한 구현이 먼저) - Jest:
가능하다면 Unit test를 도입하고자 한다.
형상 관리
- git: git 컨벤션 적용 (feat: updated / refactor: updated / 등등)
- github: repo 생성
기타
- figma: 디자인 시 사용
추가
와이어 프레임
pinterest 및 dribble 디자인 참고하여 디자인에 너무 몰두하지 않도록 한다. figma 사용 디자인 시안 완성 필요
기능
세부 기능들 확실하게 정하기 firebase collection/document 저장 어떻게 할 것인지 정하기
댓글남기기