react 썸네일react

2024-10-27

목차

  1. 자바스크립트 호이스팅과 export 방식
  2. 맥과 게임 관련 이야기 (메이플 월드, 바람의나라 클래식)
  3. export default 지양 및 named export의 장점
  4. 백엔드-프론트엔드 데이터 설계 및 API 설계 논의
  5. 개발 도구 및 환경 이야기 (Vim, VSCode, 노트북 환경)
  6. 리액트 및 리덕스 학습 조언
  7. CSS와 스타일링 난이도
  8. 커뮤니케이션과 협업 경험
  9. 일상, 식사, 운동, 휴식 이야기
  10. 면접 및 구직 관련

1. 자바스크립트 호이스팅과 export 방식 🛠️

  • 호이스팅(Hoisting): 자바스크립트에서 변수와 함수 선언이 코드 실행 전에 메모리에 먼저 올라가는 현상.
    • 함수 선언문과 변수 선언문은 호이스팅되어, 실제 선언문보다 앞에서 호출해도 동작.
    • 이는 때로는 의도하지 않은 버그를 유발하지만, 함수 선언을 자유롭게 위치시키는 유용함도 있음.
  • export default 사용 지양 이유
    • default export는 어떤 이름으로 import 하든 상관없이 가져올 수 있어서, 임포트하는 쪽에서 마음대로 이름을 바꿀 수 있음.
    • 이는 코드 가독성과 유지보수 측면에서 불리할 수 있어, named export를 선호하는 경향이 있음.
  • named export 사용 장점
    • 명확한 임포트: 어떤 이름으로 내보내는지 분명하여 코드 읽기가 쉬움.
    • 자동 리팩토링 지원: 함수나 컴포넌트 이름 변경 시 IDE에서 전체 코드 쉽게 변경 가능.
    • 일관성 유지: 여러 컴포넌트가 같은 이름으로 관리되어 혼란 최소화.
    • 트리 쉐이킹(Dead Code Elimination)에 유리: 번들러가 사용하지 않는 모듈을 제거해 번들 크기 감소.
  • 함수 선언식이 디버깅에 좋은 이유
    • 함수(컴포넌트)에 이름이 명시되어 있으면 디버거가 함수 이름을 잘 인식해 추적이 쉬워짐.
    • 화살표 함수도 이름이 표시될 수 있음(const MyComponent = () => ...).

2. 맥과 게임 관련 이야기 🎮🍎

  • 맥의 게임 환경이 많이 개선되어 메이플 월드, 바람의나라 클래식 같은 옛 게임들도 맥에서 지원됨.
  • 메이플 월드는 정식 서버는 아니지만 별도의 플랫폼으로도 플레이 가능.
  • 게임 플레이 경험은 빠르게 질려질 수 있지만, 개발자들 사이에 소소한 화제로 즐거움을 줌.

3. 백엔드-프론트엔드 데이터 설계 및 API 설계 💻🔄

  • 문제 상황: A, B라는 API에서 데이터를 받아 새로운 기능 C를 구현해야 할 때,
    • A, B 데이터를 각각 호출해서 사용하는 경우와
    • C 기능용 별도 API를 만드는 경우에 대한 고민.
  • 일반적인 해결법
    • 신규 기능에 특화된 API를 새로 만드는 것이 낫다.
    • 이유는 명확성과 유지보수성 향상 때문.
  • 백엔드와 프론트엔드의 역할 분배
    • 백엔드는 관계형 데이터 모델 기반 도메인 중심 응답을 제공.
    • 프론트엔드는 주로 렌더링에 맞게 데이터 약간의 가공 담당.
    • 데이터를 배열(map으로 순회하는 형태)로 만들어 렌더링하기 쉽게 하는 경우가 많음.
  • 개발자 관점
    • '편한 방식'이 기준이 되어서는 안 됨. 비용, 성능, 유지보수성 모두 고려 필요.
    • BFF(Backend For Frontend) 패턴도 데이터 문제 해결에 도움 될 수 있음.
  • API 설계 시 주의점
    • 직관적 API 설계가 중요.
    • 데이터 가공에 따른 서버 부하와 클라이언트 부하 균형 맞추기.

4. 개발 도구 및 환경 이야기 🖥️⚙️

  • Vim vs VSCode
    • Vim의 강점은 메크로(반복 작업 자동화)와 빠른 키보드 조작.
    • 최근에는 VSCode에 Vim 플러그인을 넣어 두 환경 장점을 혼용하는 경우가 많음.
    • 고사양 노트북(M1 Max 이상) 사용 권장, 그래도 무겁다고 느낄 수도 있음.
  • VSCode 프로필 기능
    • 사용자별, 프로젝트별 다른 설정과 확장 프로그램을 관리할 수 있는 기능.
    • trusted-document 문제나 extension과 연동 이슈에 대해 CLI로 대체하는 방법이 있음.
  • 노트북 환경
    • 램은 32GB 이상이면 보통 충분하지만, 더 큰 용량(64GB 등)이 작업 속도에 긍정적으로 작용.
    • 교육할인, 신제품 발표(M4 맥북 등)를 통해 업그레이드 계획 고려 가능.

5. 리액트 및 리덕스 학습 조언 📚

  • 리덕스 학습의 핵심은 reducer(누산기) 개념을 이해하는 것.
    • reducer는 상태(state)를 받아 새 상태를 리턴하는 함수.
  • 코드 작성 연습이 중요하며, 개념을 이해한 후 다양한 프로젝트에 직접 적용해 보는 것을 권장.
  • 매핑(map)을 이용해 배열 데이터를 효율적으로 렌더링하는 패턴이 일반적임.
  • 초보자 대상 프론트엔드 관련 스택: Node.js, React, SCSS, React Router 등 익히기.

6. CSS와 스타일링 난이도 🎨

  • CSS는 초보자도 어려워하는 영역 중 하나.
  • 복잡한 레이아웃, 반응형 디자인 등에서 난이도가 상승함.
  • AI 도구(GPT 등)를 활용하거나, CSS 프레임워크 사용 고려 가능.
  • CSS가 어렵다는 의견 다수, 꾸준한 연습과 학습이 필수.

7. 커뮤니케이션과 협업 경험 🤝

  • 개발자들이 다양한 경험과 의견을 나누면서 코드 설계, 환경 설정, 도구 선택 등에 대해 토론.
  • 협업에서의 조율, API 설계 시 기준점 설정에 대한 고민 공유.
  • 친근한 대화 속에서도 때로는 진지한 기술 토론과 배움의 시간이 공존.

8. 일상, 식사, 운동, 휴식 이야기 ❤️‍🔥

  • 개발자들끼리 식사 메뉴, 운동, 주말 계획 등 인간적인 이야기를 나눔.
  • 갈비찜, 감자탕, 하와이안 피자 등 다양한 메뉴 추천과 평.
  • 운동은 술 마시기 위한 체력관리라는 유머섞인 자기소개.
  • 휴식과 행복한 ‘낭비’(시간, 돈 등)를 즐기는 이야기가 등장해 인간미 묻어남.

면접팁⚡

  • 백엔드와 프론트엔드 협업 시 API 설계에 대해 면접 질문 가능
    • "백엔드에서 데이터를 어떻게 주는 게 프론트엔드에 효율적인가?"
    • 답변 시 데이터 처리의 책임 분배, 유지보수성, 성능 측면 고려해야 한다고 설명.
  • 자바스크립트 호이스팅에 대해 명확히 이해하고 있으면 플러스
    • 호이스팅 개념과 문제점, 해결책 언급 가능.
  • named export vs default export 장단점 이해
    • 코드 유지보수, 명확성, 트리 쉐이킹과 디버깅 관점에서 설명할 수 있도록 준비.

링크🔗

#자바스크립트#React#Redux#프론트엔드#백엔드#개발도구#Vim#VSCode#API설계#컬래버레이션