프론트엔드 스터디 대면 9주차: Next.js 렌더링 진화와 웹.
Next.js가 무엇이고 왜 필요한지 React와 비교해 이해한 뒤, CSR부터 SSR, SSG, ISR, PPR까지 렌더링 전략과 Web Vitals를 정리하며 스터디를 마무리합니다.
지난주에는 HTML의 기본 구조와 자주 쓰이는 태그들을 배웠습니다. 핵심만 빠르게 짚어보겠습니다.
h1 ~ h6): 문서의 계층 구조를 나타냅니다.
h1은 페이지당 하나만 사용하는 것이 SEO와 접근성 측면에서 권장됩니다.p): 텍스트 문단을 구성합니다.ul, ol, dl): 순서 없는 목록, 순서 있는 목록,
설명 목록을 각각 나타냅니다.img): src로 이미지 경로를, alt로 대체
텍스트를 지정합니다.a): href로 이동할 URL을, target="_blank"로
새 탭에서 열기를 지정합니다.table): thead, tbody, tfoot으로 구조를
나누고, colspan, rowspan으로 셀을 병합합니다.1주차 학습 자료에서는 강의 영상에서 다루지 않은 실무 개념들을 추가로 다뤘습니다. 글로만 읽으셨을 테니 핵심만 다시 짚어보겠습니다.
og:title, og:image,
og:description 등을 <head> 안에 작성합니다. og 태그가 없으면 플랫폼이
페이지 내용을 추측하므로 의도치 않은 이미지나 텍스트가 표시될 수 있습니다.srcset, picture): 모바일에서 4K 이미지를
불러오면 데이터 낭비입니다. srcset을 사용하면 브라우저가 화면 크기에 맞는
최적의 이미지를 자동 선택합니다. <picture> 태그는 조건별로 다른 이미지를
지정할 때 씁니다.article vs section: article은 떼어내서 다른 곳에 붙여도
독립적으로 의미가 통하는 콘텐츠(블로그 글, 댓글)에, section은 한 페이지
안에서 주제별 그룹화("소개", "특징", "가격표")에 사용합니다.aria-label="검색" 같은 속성을 추가합니다.
단, <div>에 ARIA를 붙이기보다 <button> 같은 시맨틱 태그를 먼저 사용하는
것이 우선입니다.Q. 웹 페이지에서 시각적으로 완전히 똑같이 굵게 보이는 두 단어가 있습니다.
하나는 CSS로 굵기만 준 것이고, 다른 하나는 HTML의 <strong> 태그를
사용한 것입니다. 눈에는 똑같이 보이는데, 왜 실무에서는 <strong> 같은
시맨틱 태그를 써야 한다고 할까요?
CSS의 font-weight: bold는 순수하게 시각적인 스타일만
변경합니다. 브라우저, 검색 엔진, 스크린 리더 모두 "이 텍스트가 중요하다"는
사실을 알 수 없습니다. 반면 <strong> 태그는
의미론적(Semantic)으로 "이 텍스트가 내용상 중요하다"는 정보를
전달합니다.
<strong> 안의
텍스트에 약간의 가중치를 부여합니다. CSS로 굵게 한 텍스트는 그냥 지나칩니다.<strong> 태그를
만나면 강조된 어조로 읽어줍니다. CSS 굵기는 시각적 변화일 뿐, 음성으로
전달되지 않습니다.핵심은 "보이는 것"과 "의미하는 것"은 다르다는 점입니다. 실무에서는 항상 의미를 먼저 생각하고, 스타일은 CSS로 분리하는 것이 좋습니다.
Q. 웹 접근성과 검색 엔진 최적화(SEO)를 고려할 때, <img> 태그에 alt
속성을 아예 생략하면 어떤 치명적인 문제가 발생할까요? 또한, 단순히 화면의
여백을 채우기 위한 '장식용 이미지'일 경우에는 이 속성을 어떻게 처리해야
할까요?
alt 속성을 생략하면 두 가지 큰 문제가 생깁니다.alt가 없으면 스크린 리더는 이미지
파일명을 그대로 읽어줍니다. IMG_20260315_142307.jpg 같은 파일명이 그대로
읽히면 사용자에게 전혀 유용하지 않은 정보가 전달됩니다.alt
텍스트를 통해 이미지의 내용을 이해하고 검색 결과에 반영하는데, 이것이 없으면
이미지가 검색에 노출될 기회를 잃습니다.그렇다면 장식용 이미지는 어떻게 할까요?
빈 alt 속성(alt="")을 명시적으로 작성합니다.
<!-- 콘텐츠 이미지: 의미 있는 alt 작성 -->
<img src="team-photo.jpg" alt="2026년 봄 스터디 팀원 단체 사진" />
<!-- 장식용 이미지: 빈 alt를 명시 -->
<img src="decorative-line.png" alt="" />
alt=""를 작성하면 스크린 리더는 이 이미지를
의도적으로 건너뜁니다. 반면 alt 속성 자체를 생략하면 스크린
리더가 이미지를 무시해야 할지 판단할 수 없어서 파일명을 읽어버립니다. "빈 값을
넣는 것"과 "속성을 빼는 것"은 완전히 다른 결과를 만듭니다.
이번 주 범위와 관련된 실제 면접 질문들을 함께 생각해봅시다. 정답을 외우기보다는 자신만의 말로 설명하는 연습을 해보세요.
시맨틱(Semantic) HTML은 태그 자체가 콘텐츠의 의미와 역할을
나타내는 마크업 방식입니다. 예를 들어 <nav>는 네비게이션,
<article>은 독립적인 콘텐츠, <header>는 머리말 영역이라는 뜻을
담고 있습니다.
모든 것을 <div>로 작성해도 화면에 보이는 결과는 동일할 수 있습니다.
하지만 시맨틱 태그를 사용하면 세 가지 이점이 있습니다.
div.container > div.wrapper > div.inner 보다
header > nav > ul이 코드를 읽는 사람에게 훨씬 명확합니다.div와 span의 차이는 무엇인가요?둘 다 의미 없는 범용 컨테이너이지만, 표시 방식(display)이 다릅니다.
div: 블록(block) 요소입니다. 한 줄 전체를 차지하며,
위아래로 쌓입니다.span: 인라인(inline) 요소입니다. 콘텐츠의 흐름 안에서
필요한 부분만 감싸며, 줄바꿈이 일어나지 않습니다.<div>이 문장은 한 줄 전체를 차지합니다.</div>
<p>이 문장에서 <span style="color: red;">이 부분만</span> 빨간색입니다.</p>
id와 class의 차이는 무엇인가요?id: 페이지 내에서 유일해야 합니다. 하나의
요소에만 부여할 수 있고, CSS 우선순위가 클래스보다 높습니다.class: 여러 요소에 중복해서 사용할 수
있습니다. 재사용 가능한 스타일을 적용할 때 사용합니다.실무에서는 스타일링에 id를 사용하는 것을 지양합니다. 우선순위가 너무 높아서
나중에 스타일을 덮어쓰기 어렵기 때문입니다. id는 주로 JavaScript에서 특정
요소를 잡거나, <label>의 for 속성 연결 용도로 사용합니다.
다음 주에는 CSS의 핵심인 박스 모델(Box Model)과 레이아웃 기초를 배웁니다. 모든 HTML 요소가 사각형 상자로 이루어져 있다는 개념을 이해하고, margin, padding, border의 차이를 익히는 것이 목표입니다.
앞으로 학습 자료에서 Tailwind CSS나 React에서의 사용법을 함께
언급하는 내용이 많아집니다. 지금 당장 Tailwind를 쓸 줄 알 필요는 없지만, 미리
비교해두는 이유가 있습니다. 우리가 지금 배우는 순수 CSS 개념(박스 모델,
Flexbox, Position 등)은 Tailwind 같은 유틸리티 프레임워크의
기반 원리입니다. 나중에 Tailwind의 p-4, flex, absolute
같은 클래스를 만나면 "아, 이게 padding: 1rem이구나", "이게 display: flex구나"라고 생각하면 더 이해하기 편하니까요.
또한 추후 react를 배우기 시작하면, 바로 tailwindCSS을 스타일링 라이브러리로 가져갈 예정입니다.
다음 주 영상(3주차 진도: 02:59:19 ~ 04:28:10)에서는 CSS 스타일링을 본격적으로 시작합니다. 영상을 보기 전에 아래 내용을 가볍게 훑어두면 이해가 빠릅니다.
font-family로 글꼴을 지정하는 법, 색상을
Hex(#FF5733), RGB, HSL 등으로 표현하는 법을 다룹니다.<div>는 한 줄 전체를, <span>은 콘텐츠 크기만큼만 차지합니다.box-sizing: width: 200px을 줬는데 실제로는 250px이 되는
상황이 생깁니다. 왜 그런지, 어떻게 해결하는지를 다룹니다.아래 영상의 2주차 진도 구간(01:36:21 ~ 02:59:19)을 시청해주세요. 사용자 입력(Form)부터 CSS 선택자 규칙까지의 내용입니다.
제대로 파는 HTML & CSS - 2주차 진도 시청하기
Post Q&A
프론트엔드 스터디 대면 1주차: HTML 마크업과 폼, 그리고 CSS의 시작 전체를 기준으로 질문과 피드백을 받아요.답을 본 뒤에는 이 내용을 댓글로 달아서 서징에게도 물어볼 수 있어요. 작성자가 직접 볼 수 있어요!
Next.js가 무엇이고 왜 필요한지 React와 비교해 이해한 뒤, CSR부터 SSR, SSG, ISR, PPR까지 렌더링 전략과 Web Vitals를 정리하며 스터디를 마무리합니다.
비동기와 async/await를 배운 뒤, 대면에서는 API를 단순 호출 방법이 아니라 프론트엔드와 백엔드 사이의 계약으로 바라봅니다. HTTP, REST, CORS, 프록시, API 클라이언트 구조, TanStack Query와 파일 배치까지 연결합니다.
바닐라 JS의 한계에서 React가 등장한 이유까지, 컴포넌트와 렌더링 방식을 이해하고 프로젝트 구조 감각을 만들어가는 대면입니다.
4~6주차 공백 이후 진행하는 첫 번째 대면입니다. HTML/CSS/JS 핵심을 가볍게 다시 연결하고, 브라우저가 코드를 실제 화면으로 바꾸는 과정을 통해 렌더링 파이프라인과 성능 감각을 잡습니다.
길어진 6주차 대면의 두 번째 차시입니다. AI 시대에 개발자가 실제로 어떻게 일하는지, 그리고 프론트엔드 개발자가 디자이너·백엔드·PM 사이에서 어떤 연결과 리딩 역할을 하는지 다룹니다.
3주차 박스 모델과 스타일링 복습, 과제 풀이, 4주차 Position과 Flexbox 레이아웃까지 다룬 대면 스터디 정리입니다. 면접에서 자주 나오는 마진 겹침, box-sizing, Flexbox 관련 질문도 함께 준비합니다.
2주차 폼과 CSS 선택자 복습, 과제 풀이, 3주차 박스 모델과 스타일링까지 다룬 대면 스터디 정리입니다. 면접에서 자주 나오는 GET vs POST, CSS 우선순위, 박스 모델 관련 질문도 함께 준비합니다.
1주차 HTML 핵심 복습과 과제 풀이, 2주차 폼(Form)과 CSS 선택자까지 다룬 대면 스터디 정리입니다. 면접에서 자주 나오는 시맨틱 HTML, img alt 속성 관련 질문도 함께 준비합니다.
프론트엔드 개발자가 실무에서 하는 일, 2025-2026 기술 스택, 현실적인 연봉과 채용 트렌드를 정리했습니다. 스터디 자료 구조와 앞으로의 방향도 함께 안내합니다.