프론트엔드 스터디 11주차: React 기초 2 —.
useEffect로 사이드 이펙트를 다루고, 이벤트 처리와 폼 상태 관리까지 — React로 실제 동작하는 앱을 만들기 위한 핵심 기술을 배웁니다.
제대로 파는 HTML & CSS - 1주차 진도 시청하기
안녕하세요. 프론트엔드 스터디 1주차에 오신 것을 환영합니다. 이번 주차 영상을 통해 우리는 제목, 문단, 이미지, 표 등 화면에 정보를 나타내는 가장 기본적인 HTML 태그들을 배웠습니다. 브라우저가 화면을 그리는 첫 번째 경험을 하신거에요.
아래 10문제를 막힘없이 풀 수 있다면,
이번 주 학습 영상을 생략하거나, 필요한 부분만 선택적으로 시청하셔도 좋습니다.
바로 하단의 제가 추가로 알면 좋은 개념들을 확인해보세요.
카카오톡이나 슬랙에서 링크를 공유하면 제목, 설명, 이미지가 자동으로 미리보기 카드에 표시되는 것을 본 적이 있으실 겁니다. 이 정보는 HTML을 파싱해서 가져오는 것이 아니라, <head> 태그 내부에 있는 Open Graph (og) 메타 태그를 읽어와서 보여주는 것입니다.
Open Graph는 페이스북이 2010년에 만든 프로토콜로, 웹 페이지가 소셜 미디어에서 어떻게 보일지 제어할 수 있게 해줍니다. 아래처럼 <meta> 태그에 property와 content 속성을 지정하면 됩니다.
<head>
<meta property="og:title" content="프론트엔드 스터디 1주차 모집" />
<meta
property="og:description"
content="웹 개발의 기초부터 탄탄하게 함께 공부해요."
/>
<meta property="og:image" content="https://mysite.com/thumbnail.png" />
<meta property="og:url" content="https://mysite.com/study/week1" />
</head>
만약 og 태그를 설정하지 않으면, 각 플랫폼이 자체 알고리즘으로 페이지 내용을 추측해서 보여주기 때문에 의도하지 않은 텍스트나 이미지가 표시될 수 있습니다. 실무에서는 og 태그 설정이 거의 필수입니다.


하나의 웹 페이지를 데스크톱, 태블릿, 스마트폰 등 다양한 기기에서 열어볼 수 있습니다. 그런데 작은 스마트폰 화면에 4K 해상도의 거대한 이미지를 다운로드하는 것은 데이터 낭비이겠죠? <img>의 srcset 속성이나 <picture> 태그를 사용하면 브라우저가 사용자의 화면 크기와 해상도에 맞춰 가장 적절한 이미지를 스스로 골라 다운로드합니다.
<picture> 태그는 여러 <source>를 나열하고, 조건에 맞는 첫 번째 이미지를 사용합니다. 어떤 조건에도 해당하지 않으면 <img>에 지정된 기본 이미지를 보여줍니다.
<picture>
<source media="(min-width: 800px)" srcset="desktop-image.jpg" />
<img src="mobile-image.jpg" alt="팀 프로젝트 회의 모습" />
</picture>
위 코드에서 브라우저 화면이 800px 이상이면 desktop-image.jpg를, 그보다 작으면 mobile-image.jpg를 불러옵니다. 이 외에도 srcset과 sizes 속성을 <img> 태그에 직접 사용하는 방법도 있습니다.
<img
src="small.jpg"
srcset="small.jpg 480w, medium.jpg 800w, large.jpg 1200w"
sizes="(max-width: 600px) 480px, (max-width: 1000px) 800px, 1200px"
alt="팀 프로젝트 회의 모습"
/>
480w, 800w, 1200w는 각 이미지의 실제 너비(픽셀)를 브라우저에 알려주는
것이고, sizes는 화면 크기에 따라 이미지가 차지할 공간을 알려줍니다.
브라우저는 이 두 정보를 조합해서 최적의 이미지를 선택합니다.
제가 생각했을 때, 시맨틱 HTML을 작성할 때 가장 헷갈리는 부분 중 하나가 <article>과 <section>의 구분입니다. 둘 다 콘텐츠를 묶는 역할을 하지만, 의미가 다릅니다.
<article>: 그 구역만 떼어내서 다른 곳에 붙여넣어도 독립적으로 의미가 통하는 콘텐츠에 사용합니다. 블로그 글, 뉴스 기사, 댓글 하나하나, 상품 카드 등이 해당됩니다.<section>: 하나의 페이지 안에서 주제별로 내용을 그룹화할 때 사용합니다. "소개", "특징", "가격표"처럼 논리적으로 구분되는 영역을 나눌 때 적합합니다.<!-- 블로그 페이지 예시 -->
<section>
<h2>최신 글 목록</h2>
<article>
<h3>HTML 시맨틱 태그의 중요성</h3>
<p>시맨틱 태그를 사용하면 검색 엔진과 스크린 리더가...</p>
</article>
<article>
<h3>CSS Grid vs Flexbox</h3>
<p>레이아웃을 잡을 때 어떤 도구를 선택해야 할까...</p>
</article>
</section>
웹사이트를 눈으로 보는 사람은 돋보기 아이콘이 있는 버튼을 보고 "검색 버튼이구나"라고 바로 알 수 있습니다. 하지만 시각 장애가 있어 스크린 리더기를 사용하는 분들은 코드 상의 텍스트 정보에 의존합니다. 아이콘만 들어있는 버튼에 텍스트가 없다면, 스크린 리더는 "버튼"이라고만 읽어주게 됩니다.
이때 ARIA(Accessible Rich Internet Applications) 속성을 활용하면 시각적으로는 보이지 않지만 스크린 리더가 읽을 수 있는 정보를 추가할 수 있습니다.
<!-- aria-label: 요소에 이름표를 붙여줍니다 -->
<button aria-label="검색">
<img src="search-icon.png" alt="" />
</button>
<!-- aria-hidden: 장식용 요소를 스크린 리더가 무시하게 합니다 -->
<span aria-hidden="true">★</span> 평점 4.5점
<!-- aria-expanded: 열림/닫힘 상태를 알려줍니다 -->
<button aria-expanded="false">메뉴 열기</button>
다만 ARIA를 사용하기 전에, 먼저 올바른 시맨틱 HTML 태그를 사용하는 것이 우선입니다. 예를 들어, 클릭 가능한 요소라면 <div>에 ARIA를 잔뜩 붙이는 것보다 <button> 태그를 쓰는 것이 훨씬 낫습니다. ARIA는 시맨틱 태그만으로 부족할 때 보충하는 역할로 생각하면 좋습니다.
다가오는 스터디 모임 전, 아래 질문에 대해 본인만의 생각을 댓글로 남겨주세요.
Q. 웹 접근성과 검색 엔진 최적화(SEO)를 고려할 때,
<img>태그에alt속성을 아예 생략하면 어떤 치명적인 문제가 발생할까요? 또한, 단순히 화면의 여백을 채우기 위한 '장식용 이미지'일 경우에는 이 속성을 어떻게 처리해야 할까요?
Post Q&A
프론트엔드 스터디 1주차: 마크업 그 이상, 실무를 위한 중급 HTML 가이드 전체를 기준으로 질문과 피드백을 받아요.답을 본 뒤에는 이 내용을 댓글로 달아서 서징에게도 물어볼 수 있어요. 작성자가 직접 볼 수 있어요!
useEffect로 사이드 이펙트를 다루고, 이벤트 처리와 폼 상태 관리까지 — React로 실제 동작하는 앱을 만들기 위한 핵심 기술을 배웁니다.
지금 당장 읽지 않아도 됩니다. React를 배우면서 에러 처리가 필요해지거나 면접 대비가 필요할 때 참고하세요.
React를 처음 시작합니다. 컴포넌트, JSX, props, useState까지 — React 앱을 만들기 위한 핵심 네 가지를 한 번에 배웁니다.
React를 배우면서 this가 헷갈리거나, 면접 대비가 필요할 때 참고하는 JS 심화 자료입니다. 이 내용을 지금 당장 완벽히 이해하지 않아도 React를 배우는 데 지장이 없습니다.
Next.js가 무엇이고 왜 필요한지 React와 비교해 이해한 뒤, CSR부터 SSR, SSG, ISR, PPR까지 렌더링 전략과 Web Vitals를 정리하며 스터디를 마무리합니다.
다음 주부터 React를 시작합니다. React 코드에서 매 줄 등장하는 map/filter, 구조 분해, 스프레드, 옵셔널 체이닝, 모듈까지 — React 코드를 막힘없이 읽기 위한 JS 문법을 한 번에 정리합니다.
비동기와 async/await를 배운 뒤, 대면에서는 API를 단순 호출 방법이 아니라 프론트엔드와 백엔드 사이의 계약으로 바라봅니다. HTTP, REST, CORS, 프록시, API 클라이언트 구조, TanStack Query와 파일 배치까지 연결합니다.
JS 비동기 처리의 흐름을 배웁니다. 클로저가 왜 중요한지, 콜백 지옥을 해결한 Promise, 그리고 현대 JS의 표준인 async/await까지 이어지는 흐름을 이해합니다.
바닐라 JS의 한계에서 React가 등장한 이유까지, 컴포넌트와 렌더링 방식을 이해하고 프로젝트 구조 감각을 만들어가는 대면입니다.
JS에서 가장 낯선 개념 중 하나인 프로토타입 기반 상속을 다룹니다. const가 왜 불변을 보장하지 않는지, 타입을 런타임에 정확히 확인하는 방법까지 함께 배웁니다.
JavaScript에서 거의 모든 것은 객체입니다. 함수가 일급 객체라는 의미, var와 let의 스코프 차이, 그리고 렉시컬 스코프까지 다룹니다.
4~6주차 공백 이후 진행하는 첫 번째 대면입니다. HTML/CSS/JS 핵심을 가볍게 다시 연결하고, 브라우저가 코드를 실제 화면으로 바꾸는 과정을 통해 렌더링 파이프라인과 성능 감각을 잡습니다.
길어진 6주차 대면의 두 번째 차시입니다. AI 시대에 개발자가 실제로 어떻게 일하는지, 그리고 프론트엔드 개발자가 디자이너·백엔드·PM 사이에서 어떤 연결과 리딩 역할을 하는지 다룹니다.
JavaScript를 처음 제대로 배우는 주차입니다. var/let/const의 차이, JS만의 독특한 타입 시스템, 그리고 호이스팅·TDZ까지 다룹니다.
배경 이미지를 제어하고, Position으로 요소를 원하는 위치에 배치하며, Flexbox로 유연한 가로·세로 레이아웃을 구성합니다. 요소를 화면 정중앙에 띄우거나, 내비게이션 바처럼 가로로 예쁘게 정렬하는 것이 이번 주 목표입니다.
3주차 박스 모델과 스타일링 복습, 과제 풀이, 4주차 Position과 Flexbox 레이아웃까지 다룬 대면 스터디 정리입니다. 면접에서 자주 나오는 마진 겹침, box-sizing, Flexbox 관련 질문도 함께 준비합니다.
폰트와 색상을 다루고, 인라인과 블록 요소의 차이를 이해하며, 마진·패딩으로 구성되는 박스 모델을 완벽하게 익힙니다. 요소들 사이의 여백을 자유자재로 제어하고 화면이 찌그러지지 않게 박스 크기를 다루는 것이 이번 주 목표입니다.
2주차 폼과 CSS 선택자 복습, 과제 풀이, 3주차 박스 모델과 스타일링까지 다룬 대면 스터디 정리입니다. 면접에서 자주 나오는 GET vs POST, CSS 우선순위, 박스 모델 관련 질문도 함께 준비합니다.
사용자 입력을 받는 폼(Form)을 만들고, CSS를 HTML에 연결하는 방법과 원하는 요소를 정확히 선택하는 CSS 선택자 규칙을 배웁니다. 로그인·회원가입 폼을 직접 만들고, CSS로 원하는 요소를 콕 집어내는 것이 이번 주 목표입니다.
1주차 HTML 핵심 복습과 과제 풀이, 2주차 폼(Form)과 CSS 선택자까지 다룬 대면 스터디 정리입니다. 면접에서 자주 나오는 시맨틱 HTML, img alt 속성 관련 질문도 함께 준비합니다.
기초 태그 강의에서 한 걸음 더 나아갑니다. 카카오톡 공유 썸네일, 모바일 데이터 절약, 스크린 리더기를 위한 숨은 정보 등 실무에서 마주하게 될 중급 HTML 개념들을 가볍게 훑어봅니다.
프론트엔드 개발자가 실무에서 하는 일, 2025-2026 기술 스택, 현실적인 연봉과 채용 트렌드를 정리했습니다. 스터디 자료 구조와 앞으로의 방향도 함께 안내합니다.
스터디 커리큘럼 방향을 정하기 위한 세 번째 사전 진단 퀴즈입니다. 자바스크립트의 스코프, 참조 타입의 메모리 할당, DOM 제어와 이벤트 흐름 등 React 실무의 근간이 되는 CS 지식을 점검합니다.
스터디 커리큘럼 방향을 정하기 위한 마지막 사전 진단 퀴즈입니다. React 컴포넌트를 다루기 위해 필수적인 배열 고차 함수(map, filter)와 비동기 통신(async/await) 능력을 점검합니다.
스터디 커리큘럼 방향을 정하기 위한 마지막 사전 진단 퀴즈입니다. 선언적 UI, 상태(State), 단방향 데이터 흐름, 부수 효과(Side Effect) 등 React 생태계 진입을 위한 필수 개념을 점검합니다.
스터디 커리큘럼 방향을 정하기 위한 첫 번째 사전 진단 퀴즈입니다. HTML 태그 구조부터 CSS 박스 모델까지, 실무와 React 환경에서 이 기초들이 왜 중요한지 점검합니다.
스터디 커리큘럼 방향을 정하기 위한 두 번째 사전 진단 퀴즈입니다. 시맨틱 마크업, 폼 이벤트 제어, CSS 우선순위, Flexbox 레이아웃 등 실전 활용 능력을 점검합니다.