-
Notifications
You must be signed in to change notification settings - Fork 4
4주차 멘토링
J219_홍종우 edited this page Nov 16, 2021
·
1 revision
- 참여자
- J077_문혜현, J107_송명회, J218_홍승용, J219_홍종우, 성지현 멘토님
- 시간
- 19:30 ~ 20:30
-
API에서 정보를 줄 때 필요한 정보만 주는 게 좋은가요, 아니면 사용될지 모를 정보들을 포함해서 주는 게 좋을까?
- 필요한 정보만 반환하도록 하는 것이 기본적으로 맞음
- 추가
fetch
또는 DB query가 필요하다면 그때 사용되는 정보도 "필요한 정보" - 회원가입 상황에서는 code, center 다 반환해주는 게 좋을 것 같다.
- 서버의 성능을 최소한으로 할 수 있도록 UI에서 무조건 보여주는 데이터가 아니더라도 한 번에 반환하도록 하는 것이 좋음
-
typescript에서 타입을 지정하는 것은 최소 어느 단위로 해주는 게 좋을까요? interface Code {code: string} 이런 단위도 만들어 주어야 하나요?
- 확장할만한 데이터가 많으면 interface로 묶으면 되는데 그럴 필요가 없는 경우에는 직접 code에서 명시를 하는 것이 좋음
- 프로퍼티 하나짜리 인터페이스 -> 왜 객체로 쓰는가?
-
declare global 써도 되나요?
- 써본 적 없으심. 굳이 사용할 필요 없다는 의견.
- NPM module은 library로 만들면서 d.ts 파일을 별도로 build 하도록 만드는 방식이라서 @types 처럼 사용할 수 있음. 개발 시에는 굳이 declare 사용하지 않아도 될 것.
-
type을 declare module, namespace 방식과 export interface 하는 방식. 어떤 상황에서 어떻게 적절한지 조언을 듣고 싶습니다.
-
export
,import
해서 쓰세요
-
-
client, authController에서 error가 fetch 자체에서 에러가 발생했을 때, console.log를 찍는지, 아니면 그냥 두는지 궁금합니다.
- 빌드 옵션으로
console.log
지울수 있다 - 프로덕션 빌드에서는 당연히
console.log
를 지우는 게 맞다. (테스트, 개발시만 사용)
- 빌드 옵션으로
-
인수 하나는 꼭 필요하지만 그 외의 인수는 optional하게 주고 싶습니다. 이 때, closure를 생각해 봤는데, 다른 방식도 있다면 알고 싶습니다. (currying)
- Interface를 하나 만들어서 해당 type을 optional로 설정하는 것이 좋음
- 객체를 any로 받고 처리를 하는 방법도 좋음(Parameter 말고)
-
라우트 핸들러, 컨트롤러, service
-
routes
-controllers
-services
-
(req, res) => ...
라우트 핸들러를controllers/
로 분리하기도 한다. - 서비스는
(req, res)
에 의존하지 않는 게 맞긴 함
-
-
에러 상황
- 상황에 맞는 에러 객체를 따로 정의하고,
next(err)
로 넘겨주는 게 좋다.-
expressLoader.ts
에서 에러 핸들러를 정의해서 한 번에 처리 - 컨트롤러 코드에서 에러는
throw
해버리면 됨
-
- 상황에 맞는 에러 객체를 따로 정의하고,
-
폴리곤 성능
- 그냥 서버 메모리에
Map
으로 올려놓으면 되지 않을까? (매번 DB에서 불러오지 않고) - 20MB 정도이므로 서버 상 메모리에서 들고 있어도 큰 문제가 없음
- 성능 개선과 수치를 표기해서 사용하면 보기 좋음(도움됨)
- 개선 과정을 잘 정리해보자!
- 그냥 서버 메모리에
-
JWT 이슈 관련
- JWT는 보안적인 이슈가 될 수 있고(탈취), 그에 대한 처리가 필요
- Token 만료 시, Refresh Token을 통해 만료에 대한 처리를 해줄 필요가 있음
- token의 만료 시간을 짧게 하고, refresh token의 시간을 길게 잡는 것이 하나의 보안적 대안
-
React 렌더링 성능 최적화
- Hooks 나오기 전에는 class Component 라이프사이클 메서드로 최적화를 했는데..
- Hooks 이후에는
useCallback
,useMemo
- 우려되는 부분: 자동완성(검색)
- 한 타 칠때마다 렌더링 되는데 혹여나 다른 컴포넌트가 렌더링될 수 있다. 체크해볼것
- debouncing 하면 됨 (주로 자동완성기능은 이렇게 처리)
-
새로운 기능 vs ...
- 단순히 "어떤 기술을 사용해보았다" 보다는 "어떤 고민이 있었고 어떻게 해결했다"는 서사가 더 좋다
- 성능 최적화, 완성도에 집중하는 게 나아보인다
- 서버에서 렌더링을 최적화하는 방식도 있다