React Error Boundary: 왜 아직도 클래스일까?
·
Frontend Development
리액트 프로젝트를 하다 보면 꼭 한 번은 만나게 되는 상황이 있습니다.컴포넌트 트리 어딘가에서 에러가 터지면, 앱 전체가 그대로 하얀 화면(whitescreen of death)이 되어버리는 순간이죠.이럴 때 사용자를 보호해주는 최후의 안전망이 바로 ErrorBoundary입니다.그런데 재미있는 사실 하나. 함수 컴포넌트 전성시대인 지금도, ErrorBoundary만은 클래스 컴포넌트로만 작성해야 합니다."왜 아직도 클래스일까?" 오늘은 그 이유와 한계, 그리고 실전 적용 팁을정리해봅니다.TL;DR (Too Long; Didn’t Read)Error Boundary는 여전히 클래스 전용라이프사이클(getDerivedStateFromError, componentDidCatch)로만지원됩니다.함수형 훅으로 ..
setTimeout vs Promise.then vs queueMicrotask
·
Frontend Development
브라우저/Node.js 런타임에서 비동기 코드의 실행 순서를 정확히 이해하는 것은 디버깅과 성능 최적화의 출발점입니다. 특히 마이크로태스크 큐는 렌더링 타이밍과 상태 일관성에 직접적인 영향을 주므로, 실무에서 정확한 모델을 갖추는 것이 중요합니다.핵심 개념 정리Call Stack: 자바스크립트가 함수를 동기적으로 실행하는 스택.Web APIs(환경): 타이머, DOM, Fetch 등 비동기 작업이 대기하는 영역.Task Queue(매크로태스크 큐): setTimeout, setInterval, setImmediate(Node) 등이 들어가는 큐.Microtask Queue(마이크로태스크 큐): Promise.then/catch/finally, queueMicrotask, MutationObserver 등..
Next.js 최신 캐싱 전략 총정리
·
Frontend Development
Next.js는 App Router 기반으로 서버 컴포넌트와 데이터 페칭을 통합하면서캐싱 체계를 전면 재설계하였습니다. 본 글에서는 실무에서 가장 자주사용되는 네 가지 축, 즉 Request Memoization, Client RouterCache, Data Cache, Full Route Cache를 중심으로 원리를정리하고, 실행 가능한 예제와 함께 권장되는 베스트 프랙티스를 제시합니다.목차Request Memoization: 동일 요청 중복 제거Client Router Cache: 탐색 성능 최적화Data Cache: fetch 응답의 서버 캐싱 및 검증Full Route Cache: 페이지 단위 정적 캐싱(ISR 포함)실무 팁/주의사항, 비교 표, 참고 자료캐싱 전반 개념 맵서버 단계: Reques..
면접에서 묻는 "의존성 주입 경험이 있나요?"의 의미
·
Frontend Development
프론트엔드 면접에서 자주 듣는 질문 중 하나가 "의존성 주입(Dependency Injection, DI) 경험이 있나요?"입니다.이 질문은 단순히 특정 DI 프레임워크를 써봤냐를 묻는 게 아니라, 코드 구조와 의존성 관리 문제를 이해하고 있는지를 확인하는 의도에 가깝습니다.1. 의존성 문제(Dependency Problem)란?소프트웨어에서 어떤 클래스나 모듈이 다른 객체를 직접 생성하거나 강하게 참조하면 문제가 발생합니다.class UserService { private api = new ApiClient(); // 직접 생성 → 강한 결합}이 경우:테스트하기 어려움 (ApiClient를 Mock으로 교체 불가)재사용성이 낮음 (다른 구현체로 교체하기 힘듦)결합도가 높아 유지보수가 어려움즉, 의존성..
useState vs useRef vs let: 언제 무엇을 써야 할까?
·
Frontend Development
의의와 배경useRef는 리렌더링 간에도 유지되는 가변 저장소를 제공한다. 값 변경이 렌더를 유발하지 않는다는 점에서 useState와 구분되며, 컴포넌트 인스턴스마다 독립적으로 유지된다는 점에서 단순 let과도 다르다. 주로 DOM 접근, 타이머/외부 핸들 저장, 최신 값 보관 등 렌더와 무관한 정보를 관리할 때 사용한다.목차개념 정리: 렌더링 모델과 ref.current비교: useState vs useRef vs let사용 시나리오와 코드 예시주의사항(안티패턴)체크리스트결론개념 정리useRef(initial)는 { current: T } 형태의 객체를 반환한다.ref.current를 변경해도 컴포넌트는 리렌더링되지 않는다.같은 컴포넌트 인스턴스에서 렌더 간 동일한 ref 객체가 유지된다.의도: “렌..
Core Web Vitals: LCP, INP, CLS 개념과 개선 방법
·
Frontend Development
의의와 배경Core Web Vitals는 구글이 웹 사용자 경험을 정량화하기 위해 정의한 핵심 성능 지표다. 이 지표는 실제 사용자 경험을 직접적으로 반영하며 검색 순위(SEO)에도 영향을 미친다. 프론트엔드 개발자는 필수적으로 이해하고 지속적으로 관리해야 한다.목차개요: 지표 정의와 목표 기준LCP: 의미, 원인, 개선 체크리스트INP: 의미, 원인, 개선 체크리스트CLS: 의미, 원인, 개선 체크리스트측정 방법: Lab vs Field, 실측 코드 예시실무 팁/흔한 실수체크리스트와 결론개요Core Web Vitals는 세 가지 지표로 구성된다.지표의미권장 기준주의 구간LCP (Largest Contentful Paint)가장 큰 콘텐츠가 화면에 보이기까지의 시간≤ 2.5s2.5s ~ 4.0sINP (..
코드가 깔끔해지는 비밀: 프론트엔드에서 함수형 프로그래밍 활용하기
·
Frontend Development
프론트엔드를 하다 보면 상태 변경과 데이터 변환이 정말 자주 등장한다. 이때 함수형 프로그래밍(FP)은 코드를 더 예측 가능하고 테스트하기 쉽게 만든다. 이번 글은 핵심을 짧게 정리하고, 코드 예제로 바로 확인한다. 실제로 언제 FP가 맞는지도 함께 본다.1. 기본 개념 한 줄 요약함수형 프로그래밍은 순수 함수와 불변성에 기반한 선언적 스타일이다.동일 입력 → 동일 출력, 외부 상태 변경 없음. 원본은 건드리지 않고 새 값을 만든다.2. 순수 함수 vs 부수효과, 코드로 비교 // 순수: 동일 입력이면 항상 동일 출력, 외부 상태 변경 없음 function add(a: number, b: number): number { return a + b; } // 비순수: 외부 상태(total)를 변경..
프론트엔드 개발자를 위한 AI 용어 완전 정리
·
Frontend Development
최근 웹 개발에서 AI 기능 통합이 급증하면서, 프론트엔드 개발자도 AI 관련 용어를 정확히 이해해야 할 필요성이 커지고 있습니다. ChatGPT API 연동부터 이미지 생성 AI까지, 다양한 AI 서비스를 프론트엔드에 통합하는 프로젝트가 늘어나고 있기 때문입니다.이 글에서는 프론트엔드 개발자가 꼭 알아야 할 AI 핵심 용어들을 체계적으로 정리했습니다. 각 용어의 정의와 함께 실제 프론트엔드 개발에서 어떻게 활용되는지 설명하겠습니다.기본 AI 개념AI (Artificial Intelligence, 인공지능)인간의 지능을 모방하여 학습, 추론, 문제 해결 등을 수행하는 컴퓨터 시스템입니다. 프론트엔드에서는 주로 REST API나 WebSocket을 통해 AI 서비스와 통신합니다.머신러닝 (Machine L..
시간복잡도와 공간복잡도: 개발자가 알아야 할 성능 최적화의 기초
·
Frontend Development
프론트엔드 개발에서 성능은 사용자 경험을 좌우하는 핵심 요소입니다. 특히 대용량 데이터 처리, 복잡한 UI 렌더링, 실시간 검색 기능 등을 구현할 때 알고리즘의 효율성이 직접적으로 성능에 영향을 미칩니다. 이 글에서는 시간복잡도와 공간복잡도의 개념부터 실무에서의 활용 방법까지 체계적으로 정리하겠습니다.알고리즘 복잡도란 무엇인가?성능 평가의 필요성실제 개발에서 동일한 기능을 구현하는 여러 가지 방법이 존재할 때, 어떤 방법이 더 효율적인지 판단해야 합니다.// 배열에서 최댓값 찾기 - 방법 1function findMaxMethod1(arr) { let max = arr[0]; for (let i = 1; i max) { max = arr[i]; } } return max;}// 배..
[JWT 가이드] 개념부터 React 실무 구현까지 - Session 비교, 보안, TypeScript 예제 총정리
·
Frontend Development
프론트엔드 개발에서 사용자 인증은 거의 모든 프로젝트의 핵심 요구사항입니다. 전통적인 세션 기반 인증에서 토큰 기반 인증으로의 전환이 가속화되면서, JWT(JSON Web Token)는 현대 웹 애플리케이션의 표준 인증 방식으로 자리잡았습니다. 이 글에서는 JWT의 개념부터 실제 구현까지 체계적으로 정리하겠습니다.목차JWT란 무엇인가?JWT의 구조와 동작 원리JWT vs Session 인증 방식 비교JWT의 장점과 단점실제 구현 예시보안 모범 사례결론 및 실무 가이드JWT란 무엇인가?JWT(JSON Web Token)는 당사자 간에 정보를 JSON 객체로 안전하게 전송하기 위한 컴팩트하고 자체 포함된(self-contained) 방식을 정의하는 개방형 표준(RFC 7519)입니다.JWT가 필요한 이유현대..