반응형

분류 전체보기 251

React Hooks ✅ useMemo, useCallback, useRef 리렌더링 최적화

React 앱이 느려지는 주요 원인은 대부분 “불필요한 리렌더링”입니다.컴포넌트가 재렌더링될 때마다 함수, 객체, 배열이 새로 생성되기 때문이죠. 이 문제를 해결하기 위한 세 가지 Hook:🧠 useMemo, ⚙️ useCallback, 📦 useRef 이 세 가지를 제대로 알면 성능 최적화 + 안정적인 상태 관리가 동시에 가능합니다 👇🧠 1. useMemo – 계산 결과를 메모이징복잡한 계산의 결과를 기억해두고, 의존값이 변할 때만 다시 계산. import { useMemo, useState } from "react";function ExpensiveComponent({ items }: { items: number[] }) { const [count, setCount] = useState(0)..

React, Vue 2025.12.10

React 애니메이션 ✅ Framer Motion으로 부드럽고 감성적인 UI 만들기

React 프로젝트에서 자연스러운 애니메이션을 구현하고 싶다면CSS transition이나 GSAP보다 먼저 고려해야 할 라이브러리, 바로 Framer Motion입니다. Next.js, CRA, Remix 등 어떤 React 환경에서도 쉽게 동작하고,상태 변화 → 애니메이션 전환을 아주 직관적으로 다룰 수 있죠.⚙️ 1. 설치 및 기본 세팅 npm install framer-motion 기본 Import: import { motion } from "framer-motion";🧩 2. 기본 애니메이션 예제 import { motion } from "framer-motion";export default function BasicBox() { return ( );} 📌 실행 흐름initial:..

React, Vue 2025.12.07

다크모드 ✅ CSS 변수와 prefers-color-scheme

다크모드는 이제 선택이 아니라 기본 옵션이 되었습니다.스마트폰, OS, 웹브라우저까지 모두 다크모드를 지원하죠. ✅ 이번 포스팅에서는CSS 변수(:root)미디어 쿼리(prefers-color-scheme)JS 토글 버튼을 조합해 실무형 다크모드 시스템을 완성해보겠습니다 ⚙️🧱 1. CSS 변수 기반 색상 시스템 만들기 :root { --bg-color: #ffffff; --text-color: #222222; --accent-color: #007bff;}body { background-color: var(--bg-color); color: var(--text-color);}a { color: var(--accent-color);} 📌 장점색상 교체가 단 1줄로 가능다크모드뿐 아니라 다른 ..

HTML, CSS 2025.12.04

웹 접근성 ✅ 키보드 네비게이션 (Tab, Focus, Role, ARIA)

사용자는 마우스뿐 아니라 키보드(Tab, Enter, Space),심지어 스크린리더로도 웹사이트를 탐색합니다. 하지만 HTML 구조가 잘못되어 있거나,포커스가 사라지는 UX를 제공한다면 접근성 점수는 0점 😭 이번 포스팅에서는 실무에서 자주 쓰이는키보드 네비게이션 UX 설계 원칙과 실무 예제를 정리합니다.⌨️ 1. Tab 키 순서 제어모든 인터랙티브 요소는 기본적으로 Tab 키로 접근 가능합니다. 로그인회원가입 📌 Tab 순서는 HTML 구조 순서에 따릅니다.따라서 DOM 순서 = 시각적 순서로 유지하는 것이 중요합니다.⚙️ tabindex 속성 포커스 가능프로그램만 포커스 가능 값 설명 0Tab 순서에 포함됨-1Tab으로는 접근 불가 (스크립트로만 접근)📌 tabindex="0"은 커스텀 UI ..

HTML, CSS 2025.12.01

CSS 레이아웃 Flex와 Grid 혼합 설계 실무 패턴

CSS Flexbox는 일차원(1D) 정렬,CSS Grid는 이차원(2D) 배치를 담당합니다. ✅ Grid → 페이지 전체 레이아웃✅ Flex → 내부 구성 & 정렬 이 두 가지를 적절히 섞으면“반응형 + 정렬 + 가독성 + 유지보수성”을 모두 잡을 수 있습니다 💪📐 1. Grid로 전체 구조, Flex로 내부 정렬 Logo Menu Main Content Footer .layout { display: grid; grid-template-rows: auto 1fr auto; height: 100vh;}.header-inner { display: flex; justify-content: space-between; align-items: center..

HTML, CSS 2025.11.28

반응형 웹디자인 ✅ 모바일 퍼스트 전략과 실무 설계법

요즘 웹사이트는 모바일 사용률이 70% 이상입니다.그래서 이제는 “데스크탑 기준으로 줄여가는 방식”이 아니라👉 모바일 기준으로 확장해가는 설계 (Mobile First) 가 표준입니다.🌱 1. 모바일 퍼스트란?모바일 퍼스트(Mobile First) 는 디자인과 개발을 “가장 작은 화면”에서 시작하여,점점 화면이 커질 때마다 스타일을 확장하는 접근 방식입니다. 📌 핵심 개념:❌ “큰 화면을 줄이는 것” → ✅ “작은 화면을 확장하는 것”📏 2. 기본 단위 설계 – 뷰포트 기준 html { font-size: 16px; /* 기준 단위 */}.container { width: 100%; max-width: 1200px; margin: 0 auto;} 📌 모바일에서는 항상 100% 기반 레이아..

HTML, CSS 2025.11.25

CSS Grid ✅ 실무에서 바로 쓰는 5가지 레이아웃 패턴

CSS Grid는 2차원(행 + 열) 레이아웃을 완벽하게 제어할 수 있는 강력한 도구입니다.이 포스팅에서는 단순한 정렬을 넘어서, 실무에서 자주 쓰는 패턴 예시를 소개해봅니다.🧱 1. 기본 레이아웃 패턴 (Header / Main / Aside / Footer) Header Sidebar Main Footer​ .grid-layout { display: grid; grid-template-areas: "header header" "aside main" "footer footer"; grid-template-columns: 200px 1fr; grid-template-rows: 80px 1fr 60px; gap: 10px;}header { grid-area: header;..

HTML, CSS 2025.11.22

Next.js 13+ App Router ✅ Layout, Page, Loading, Metadata

기존 pages/ 라우터와 달리, App Router는 디렉터리 구조 자체가 라우팅 규칙이 됩니다.app/ 디렉토리 안의 폴더마다 페이지, 레이아웃, 로딩, 에러 처리, 메타데이터를 담당하는 파일이 존재하죠.🧩 1. App Router 기본 구조 app/ ├─ layout.tsx # 공통 레이아웃 ├─ page.tsx # 루트 페이지 ├─ loading.tsx # 로딩 상태 ├─ error.tsx # 에러 페이지 ├─ about/ │ ├─ page.tsx # /about │ ├─ layout.tsx # about 전용 레이아웃 │ ├─ loading.tsx # about 로딩 UI │ └─ error.ts..

React, Vue 2025.11.19

JavaScript setTimeout vs setInterval 차이점과 실무에서의 활용 예제

오늘은 자바스크립트(JavaScript)를 활용한 시간 제어 함수인setTimeout과 setInterval에 대해 자세히 알아보겠습니다.이 두 함수는 웹 개발 실무에서 매우 자주 사용되며,타이머 관련 기능을 구현할 때 유용하게 활용됩니다.✅ 1. setTimeout이란?setTimeout은 일정 시간이 지난 후에 단 한 번 특정 작업을 실행하도록 예약하는 함수입니다. setTimeout(() => { console.log('3초 후에 실행됩니다!');}, 3000); 📌 위 코드는 3초(3000ms) 후에 콘솔에 메시지를 출력합니다.✅ 2. setInterval이란?setInterval은 일정 시간 간격으로 계속 반복해서 특정 작업을 실행하도록 예약하는 함수입니다. setInterval(() => ..

JavaScript, jQuery 2025.11.19

Next.js 렌더링 ✅ CSR, SSR, SSG, ISR 차이와 선택

React로 만든 SPA(Single Page Application)는 기본적으로 클라이언트 렌더링(CSR) 방식입니다.하지만 이 방식은 SEO, 초기 로딩 속도에서 한계가 있었죠.Next.js는 이런 단점을 보완하기 위해 다양한 렌더링 옵션을 제공합니다 👇💻 1. CSR (Client-Side Rendering)📌 렌더링 위치 → 브라우저(클라이언트)📌 예시 → 순수 React 앱 (create-react-app) function App() { const [data, setData] = useState(null); useEffect(() => { fetch("/api/data").then(res => res.json()).then(setData); }, []); return {dat..

React, Vue 2025.11.16
반응형