# 4/8
### 오전
- 스크럼 간단하게
- PR 에 대해 리뷰
### 오후
- 전체 공유 (3시~4시)
- PR 보내기 위한 문서작성(4시~5시)
- PR 보내기 (~5시)
- 주간 회고 (5시~6시)
### 오전 회의
- eslint import/order 에 쓰이는 키값에 대해서 논의
- pathGroups 의 필요성??
- groups 의 순서 정하기
- internal vs [parent, siblings]
- 무슨 차이가 있을까
- 이슈 라벨에 예상 소요시간 적기
- 제목에 `이슈번호` 쓰는 컨벤션은 삭제하자
- 코드스쿼드 레포에서 자꾸 링크됨..
### 이슈
- babel-node 실행관련
- 맥과 윈도우 차이
### 발표
- 환경설정에 대해서 같이 의논할 사항이 많았어서(lint, 어떤 tools 를 쓸건지) 실질적으로 front 코딩은 오늘(금요일)부터했음..
- (park) BE 관련해서 JSON server 를 npx 로 쓰는게 맘에안들어서 lowdb 직접 하다가 routes 가 거의 불가능해보여서 express + mongoDB 로 이사갔다.
- (BB) 처음 사용해보는거라 블로그 등 참고자료 보면서 사실 꼼꼼히 확인못하고 작성했던 것도 있는데 리뷰를 꼼꼼히 해 주셔서 공부할 시간을 많이 가졌고, 파크의 의견이나 지식을 많이 들을 수 있던 점도 좋았다.
- git 협업툴 을 굉장히 많이 잘썼다
- Wiki
- Projects
- Issues
- Pull request
- main 보내는게 아니라서 자동으로 되는건 아니었지만,, 어떤 흐름으로 되는지 이해 했음
- manage automation
- PR 기반으로 협업
- back 과 front 간에 코드 동기화가 어려웠다
- 2명이라 좀 번거로웠다
- 리뷰 확인도하고, 코딩도해야되고...
- peact
- 클래스기반(리액트의 클래스 생명주기처럼?)으로 해봤으니까 hooks 기반으로도 해보면 좋지않을까~?
- hooks 기반으로 리액트가 어떤 흐름으로 렌더링이 되는지를 확인해보니 useState, useEffect 등을 사용했다.
- useState, useEffect 를 직접 공부하고 구현해봤다.
- 아직 제대로 테스트를 안해봐서 버그가 있는지는 모르겠지만 아직은 잘된다
- postcss
- css-in-js 방식 도입
- 가장 많이 쓰는 전처리기? 라고 들어서 사용해보자고 이야기했다.
- create-react-app 의 default
- 클래스명에 대한 고민이 줄어서 좋았다.
- 다양한 플러그인으로 크로스브라우징에 대해 대응할 수 있는점도 좋았다.
### PR
## 💻 구현된 사항
<img width="949" alt="스크린샷 2022-04-08 오후 4 42 11" src="https://user-images.githubusercontent.com/58503584/162389172-c4575937-2f0e-4163-9ea0-e1ac186b5a49.png">
- 미리 작성한 HTML+CSS 를 바탕으로 `Component` 구조 짜보고, 화면에 띄우기
## 🧐 어떤 생각으로?
- `peact.js`
- 이전 미션에서는 클래스기반(리액트의 클래스 생명주기처럼?)으로 VanilaJS SPA 구현을 해봤으니 `함수형 기반으로도 해보면 좋지않을까` 라는 생각으로 페어 프로그래밍을 통해 함수형 컴포넌트를 생성하는 기반이 될 코드를 작성해보았습니다.
- 함수형은 useHooks 를 사용하고, 그 기반으로 리액트가 어떤 흐름으로 렌더링을 하는지 확인해보니 useState, useEffect 등을 사용하는 것을 공부했습니다.
- useState, useEffect 가 어떻게 실행되는지를 상상해보면서 VanilaJS로 구현해보았습니다.
- 아직 제대로 테스트를 안해봐서 버그가 있는지는 모르겠지만 버그가 생기면 고쳐나가는 식으로 사용해보겠습니다
- postcss
- create-react-app 의 default인 처리기인데, 사용해본 경험이 없어서 이번 미션을 통해 사용하자고 이야기를 나누었습니다.
- 클래스명에 대한 고민이 줄어서 좋았습니다.
## 🥲 아쉬웠던 || 어려웠던 점?
### [BE]
- JSON server + lowdb 를 활용해서 router 를 만들어 보려고 했던 시도가 어려웠습니다.
- express 를 사용했던 경험을 떠올리면서 그와 비슷하게 사용해보려고 했는데 JSON server 가 지원하는 정도가 `express.Router()` 와 같은 기능을 지원하지 않는 것 같아서 `express + mongoDB` 로 바꾸게 되었습니다.
## 🧑💻 알아볼점
- 맥과 윈도우간에 환경변수(?)를 처리 하기위한 환경설정
## ❗️문제발생 then 해결한 방법
- babel-node 실행관련
- 맥에서 실행이 되던 npm scripts 가 윈도우에서 동작되지 않았음
- 해결한 방법
- 윈도우에서 babel-node 의 경로 지정해서 실행하기
- `./node_modules/.bin/babel-node`
- 분명히 처리할 수 있는 방법이 있을텐데 시간이 부족해서 다음 PR에 꼭 적용할 수 있도록 하겠습니다!
## ✅ PR 리뷰에서 개선한 점
### [공통]
- lint import/order - import 정렬을 위한 `eslint-plugin-import`의 rules를 추가하여 정돈되고 일관된 형식을 유지할 수 있게 되었습니다.
### [FE]
- <a href="https://github.com/healtheloper/todo-list/pull/23">수정 PR</a>
- 웹팩 번들링 결과 디렉토리를 `.gitignore`에 추가하였습니다.
- lint 관련
- 개발 작업시 오류가 생기는 부분을 함께 확인하여 예외처리하였습니다.
### [BE]
- <a href="https://github.com/healtheloper/todo-list/pull/25">수정 PR</a>
- todo 테이블 내부에서 쓰이는 `fk` column 의 이름을 명확하게 하기
- `column` -> `columnId`
- `db.json 데이터 일관성`, `router 분리`, `모델함수(?)` 사용하던 것 파라미터 통일, 형변환 직관적으로 바꾸기, `lowdb` 관련 `update` 처리
- `express` + `mongodb` + `mongoose` 를 사용하면서 모두 개선되었습니다.
- `mongoose` 에서 `id` 를 넘겨줄 때 형변환 필요없음
- `mongoose` 에서 지원하는 `update` 함수 사용
- `mongoose` 에서 지정한 파라미터형식 사용
- `express.Router` 함수 활용하여 `router` 분리
- 데이터형식 -> `schema` 통해 `model` 생성
- `constants` 파일을 통해 enums 와 같은 값 관리
- 에러 처리관련 로직
- `mongoose` 을 사용하면 임의로 에러처리를 해줄 필요가 없음
- `try-catch` 로직만 사용
- todo logs 관련 routes
- `log/todo` 로 변경
- 업데이트시 일부분만 변경하므로 `PUT` -> `PATCH` 로 변경
## 👋 다음 PR엔?
- `BE` 와 실제 통신을 `axios` 를 통해 시도할 예정입니다.
- `axios` 와 `fetch` 차이 확인하고 사용하기!