목차
- Next.js 13버전 router.push 쿼리 전송 이슈
- JavaScript Map vs Object 사용법과 최적화
- SSR 적용 시 로더블 컴포넌트 대안 사례
- CSS 작성 팁과 추천 라이브러리
- React Native - Splash Screen 흰 화면 문제 해결법
- 소셜 로그인 후 새로고침 시 로그인 유지 방법
- Next.js에서 여러 개 테이블 상태 관리 고민
- 개발자 취준과 멘탈 이야기
- 빌드 성능 최적화 및 Tailwind JIT 소개
- 개발 관련 유용 링크 모음
1. Next.js 13버전 router.push 쿼리 전송 이슈
- Next.js 13부터 라우팅 메커니즘이 바뀌며 query 전달 방법이 달라짐.
- import 구문이 달라지고, 이전처럼 간단한 쿼리 전송이 어려워질 수 있음.
- 공식 문서와 최신 예제 참고하길 권장.
- 질문 후 즉시 해결되는 사례가 많으므로 적극적으로 커뮤니티 활용하기.
2. JavaScript Map vs Object 사용법과 최적화
- 핵심: Map과 Object 둘 다 키-값 쌍 저장하지만 용도가 다름.
- Object
- 키가 고정적이고 미리 정의된 경우 적합.
- 키 접근이 간단하고 일반적인 데이터 구조로 많이 사용됨.
- 값 변경이 직관적임 (obj[key]++ 가능).
- Map
- 키가 동적이고 많을 때 최적화되어 있음.
- 메서드(set, get)가 있어 명확한 조작 가능.
- 키의 타입이 자유로워 문자열 외에도 객체나 함수가 될 수 있음.
- 엔진 최적화
- V8 엔진의 히든 클래스(Hidden Class) 최적화 때문에 Object의 키가 자주 바뀌면 속도가 느려짐.
- 알고리즘 급에서는 성능 차이가 크지 않으므로 상황에 맞게 선택 가능.
- 참고 링크: Hidden Class Optimization in V8 엔진
3. SSR 적용 시 로더블 컴포넌트 대안 사례
- 기존에 SSR에서 로더블 컴포넌트를 쓰던 방식이 최신 Next.js에서 적합하지 않을 수 있음.
- Velog 클라이언트 오픈소스를 참고하면 프레임워크 없이 SSR을 구현하는 방법을 배울 수 있음.
- 관련 링크:
4. CSS 작성 팁과 추천 라이브러리
- CSS 어려움을 해결하는 방법
- CSS 자체를 최소화하거나 디자인 시스템을 이용해 중복 작업을 줄임.
- 클린 CSS 작성법과 opinionated 스타일 툴을 학습.
- 추천 CSS 라이브러리
- Linaria: CSS-in-JS 스타일
- Tailwind CSS: 유틸리티 퍼스트 프레임워크, JIT 지원 빌드 속도 개선
- Panda CSS: Tailwind 스타일을 참고, 타입 안전, 아토믹 CSS 지원
- Vanilla Extract: TypeScript 기반 CSS 작성
- 장단점은 있으니 프로젝트 규모와 팀 스타일에 맞춰 선택 권장.
- 참고 링크: Panda CSS 공식 사이트
- Tailwind JIT는 대규모 프로젝트에서도 빌드 속도를 800ms 이하로 줄여 유용함.
5. React Native - Splash Screen 흰 화면 문제 해결법
- 스플래시 스크린 이후 앱이 흰 화면만 나오는 현상은 꽤 자주 발생함.
- 해결 팁
- useEffect 훅에서 splash.hide()를 호출해 스플래시를 종료해야 함.
- 앱 초기 진입점에서 스플래시 제어가 이루어져야 하며, 콘솔에 로그가 보이더라도 화면이 계속 흰색일 수 있음.
- 참고 링크:
StackOverflow - react native white screen after splash
6. 소셜 로그인 후 새로고침 시 로그인 유지 방법
- 서버에서 JWT 토큰(액세스 토큰, 리프레시 토큰)을 쿠키에 저장한 후 새로고침 때 로그인 유지가 필요함.
- 로그인 상태 유지 구현 방법
- 홈페이지 진입 시 쿠키에서 액세스 토큰 확인.
- 토큰이 있으면 서버에 회원 정보 로드 요청.
- 액세스 토큰이 만료됐으면 리프레시 토큰으로 새 토큰 발급 요청.
- 두 토큰 모두 없으면 로그인 페이지로 이동.
- 프론트엔드에서는 토큰 유무에 따라 렌더링 조건 분기 처리 필요.
- 핵심은 ‘토큰의 유효성 검사 및 갱신 로직’을 구현하고, 컴포넌트 감싸서 로그인 여부에 따른 화면 분기 처리.
7. Next.js에서 여러 개 테이블 상태 관리 고민
- 한 페이지 내 여러 테이블을 표시해야 할 때 각각 별도의 state 관리가 번거로움.
- 기본 상태들
- 테이블 데이터 배열
- 페이지 인덱스
- 한 페이지 출력 행 수
- 전체 데이터 길이 등
- 상태 관리 방법
- 각 테이블별 별도의 state를 독립적으로 두어 관리 가능하지만 비효율적임.
- 리덕스 같은 전역 상태 관리 도구 사용 고려.
- React Query 등 서버 상태 관리 라이브러리도 대안 가능.
- 상태 공동 관리가 쉽도록 custom hook 작성하거나 컴포넌트 구조 설계 필요함.
8. 개발자 취준과 멘탈 이야기
- 취업준비 기간이 길면 자괴감, 좌절을 많이 겪는다고 공감하는 의견.
- 나이 많거나 연차 있는 구직자들도 같은 고민이 있음.
- 좋은 사람들과 함께 성장할 수 있는 회사 입사가 가장 중요하다는 조언.
- 대표가 개발을 모를 때 개발 난이도를 저평가하는 상황은 자주 겪음.
9. 빌드 성능 최적화 및 Tailwind JIT 소개
- 빌드 속도가 느려 개발 생산성 저하 경험 공유.
- Tailwind CSS JIT(Just-in-time compiler)는 빌드 속도 문제를 해결하기 위해 도입됨.
- JIT 덕분에 대형 프로젝트도 1초 이하 빌드 가능.
- 최신 CSS-in-JS 라이브러리들도 JIT 개념을 도입해 빌드 최적화를 도모 중임.
10. 개발 관련 유용 링크 모음
- 자바스크립트 Map/Object 최적화:
https://dev.to/samchon/secret-of-typia-how-it-could-be-20000x-faster-validator-hidden-class-optimization-in-v8-engine-1mfb - Velog Client 오픈소스 (SSR 참고):
https://github.com/velopert/velog-client - Velog v3 뉴스:
https://velog.io/@velog/velog-v3-news - Panda CSS 공식:
https://panda-css.com/ - React Native splash screen 문제:
https://stackoverflow.com/questions/44384491/how-to-remove-white-screen-after-splash-screen-in-react-native-for-android - React Hooks 이해 및 Do-Notation 관련 글:
https://devanshj.me/writings/hooks-reacts-do-notation
https://overreacted.io/algebraic-effects-for-the-rest-of-us/ - CSS Full Bleed 가이드:
https://www.joshwcomeau.com/css/full-bleed/ - 테일윈드와 빌드 속도 개선 공유 영상:
https://www.youtube.com/watch?v=gOHUasKN_A0
면접팁⚡
- JavaScript Map vs Object 질문:
- 왜 Map을 쓰는지, Object와의 차이 설명
- 성능 최적화(히든 클래스)를 간단히 설명 가능하면 감점 없음
- Next.js 상태 관리:
- 여러 컴포넌트의 상태 공유 방안(전역 상태 관리, 커스텀 훅 소개)
- 로그인 유지 구현:
- 토큰 저장 위치(쿠키), 갱신 로직, 새로고침 시 로그인 상태 유지 방법을 명확히 이해하고 설명
- React Native Splash Screen 문제 해결:
- 스플래시 화면 종료 시기와 app 초기화 처리 방법 숙지
- CSS 도구 이름과 사용 경험 초점:
- Tailwind JIT, Panda CSS 등 사용 경험과 각각 장단점 언급 가능하면 가산점.
#Nextjs#React#JavaScript#ReactNative#CSS#로그인#상태관리#TailwindCSS#면접팁#개발팁