• 베스트
  • 소득공제
  • 무료배송

코어 프런트엔드 UI - 리액트와 순수 자바스크립트로 키우는 실무 사고력(위키북스 프로그래밍 & 프랙티스 시리즈 38)

  • 정재남
  • 위키북스
  • 2026년 03월 10일
사용자 평점
0리뷰 0개
10%34,20038,000원
적립금
1,900원 (5% 적립)
추가 적립 안내
  • 5만원 이상 결제 시 (*배송비 제외)

    정가제FREE(상품/사은품) 금액이
    2,000원 이상이면 2,000원 추가적립

  • 10만원 이상 결제 시 (*배송비 제외)

    정가제FREE(상품/사은품) 금액이
    2,000원 이상이면 2,000원 추가적립

    정가제FREE(상품/사은품) 금액이
    5,000원 이상이면 5,000원 추가적립

회원가입 시 적립금 즉시 지급!

배송비
무료 (해외배송의 경우 지역에 따라 상이)

배송안내

배송비 안내
  • 1만원 이상 주문 시 무료배송 입니다.
  • 주문하신 상품을 해외로 배송 하시는 경우에는 별도의 항공료 가 부과됩니다
서울특별시 강남구 강남대로 542(논현동, 영풍빌딩)
주문 수량 변경시 안내

[주문/배송] 주문 수량 변경 시 안내

주문 수량 변경 시,배송일정이 변경될 수 있으니 반드시 확인해 주시기 바랍니다.
(고객센터 1544-9020)

지금 주문하면 9/14(월) 출고 가능
택배보다 빠른, 나우드림
상품 규격 정보
상품상세정보
ISBNISBN-13 : 9791158396602
쪽수596쪽
크기기타 규격
제품구성단행본
이 책이 속한 분야
  • 컴퓨터/IT > 인터넷
관련 이벤트

AI추천 이유

책 소개

프런트엔드 UI의 핵심, 순수 자바스크립트부터 리액트 심화 패턴까지!

프런트엔드 개발은 단순한 라이브러리 활용을 넘어, 브라우저 메커니즘을 이해하고 제어하는 과정입니다. 다만 매일 쓰는 React 훅과 컴포넌트 이면에 있는 순수 자바스크립트(Web API)의 작동 원리와 효율적인 UI 설계 구조를 제대로 이해하기는 쉽지 않습니다.

 

이 책은 같은 UIReact와 순수 자바스크립트 두 방식으로 구현하며, 각 접근법의 장단점을 비교해 이해할 수 있도록 돕습니다. 나아가 현대 프레임워크 환경 속에서 자바스크립트 생태계를 다루는 데 필요한 실무 통찰을 제공합니다.

 

《코어 프런트엔드 UI》는 기능별 작성법이나 사용법을 나열하고 소개하는 데 그치지 않고, UI가 동작하는 원리와 설계 기준을 깊이 있게 다룹니다. Intersection Observer를 활용한 가시성 제어, customValidity를 통한 폼 검증 등 최신 Web API와 리액트 기술을 다루고, HTMLCSS만으로 해결할 수 있는 영역까지 아우르며, 폭넓고 유연한 시야를 가질 수 있도록 돕습니다.

 

이 책은 정답을 제시하기보다 해결 과정에서의 고민과 시도, 그리고 문제 해결을 위한 실마리를 공유합니다. 초보 개발자라면 복잡한 UI 개념을 단계적으로 이해하며 자신감을 얻을 수 있고, 숙련된 개발자라면 프레임워크에 기대지 않고 문제를 해결하는 역량을 기를 수 있습니다. 코드를 따라 치는 것을 넘어, 스스로 생각하고 설계하는 힘을 길러 보시기 바랍니다.

 

★ 이 책에서 다루는 내용 ★

 

◎ 리액트와 순수 자바스크립트로 동일한 UI를 구현하며 각 패러다임을 이해하기

◎ 아코디언, 탭 메뉴, 툴팁 등 필수 UI 컴포넌트의 밑바닥 설계

Intersection Observer, scrollIntoView 등 순수 자바스크립트 API 실전 활용

useRef, createPortal을 활용한 DOM 직접 제어 및 레이어 관리 기법

◎ 무한 스크롤, 캐러셀 등 UX를 좌우하는 핵심 UI 로직 구현

◎ 컴파운드 컴포넌트와 헤드리스 패턴을 적용한 재사용 가능한 설계 구조

목차

[목 차]

00: 환경 구성

0.0 프로그램 설치

__0.0.0 크롬 브라우저 설치

__0.0.1 Node.jsnpm 설치

__0.0.2 비주얼 스튜디오 코드 설치

0.1 프로젝트 환경 구성

__0.1.0 설정 완료 코드 활용

__0.1.1 Vite + TanStack Router 프로젝트 생성

__0.1.2 프로젝트 시작

__0.1.3 초기화 및 기본 환경 설정

__0.1.4 공통 코드 수정

__0.1.5 경로 처리

0.2 순수 자바스크립트 실행기

 

01: 아코디언

1.0 공통 코드 작성

1.1 첫 번째 아코디언

1.2 CSS로 숨김/보임 처리

1.3 CSS 애니메이션 추가

__1.3.0 기본 애니메이션

1.4 순수 자바스크립트 버전

1.5 HTML만으로 작성

__1.5.0 radio input

__1.5.1 details

1.6 ctrl+F 검색 기능 추가

1.7 심화 - 명령형 프로그래밍과 선언형 프로그래밍

__1.7.0 명령형 프로그래밍

__1.7.1 선언형 프로그래밍

__1.7.2 두 패러다임 비교

1.8 정리

 

02: 탭메뉴

2.0 공통 코드 작성

2.1 첫 번째 탭메뉴

2.2 CSS로 숨김/보임 처리

2.3 CSS 애니메이션 추가

__2.3.0 간단한 애니메이션 - transition

__2.3.1 복잡한 애니메이션 - animation

__2.3.2 애니메이션 종료 시 클래스 제거하기

2.4 순수 자바스크립트 버전

2.5 HTML만으로 작성 - radio input

2.6 정리

 

03: 툴팁

3.0 공통 코드 작성

3.1 터치 또는 클릭으로 동작하는 툴팁

3.2 최대 하나의 툴팁만 열려 있도록 처리

__3.2.0 툴팁을 열 때 기존 툴팁을 모두 닫기 - context API 활용

__3.2.1 다른 곳 클릭 시 툴팁 모두 닫기 - 이벤트 핸들러

__3.2.2 HTML만으로 작성 - details

3.3 화면을 벗어나지 않도록 처리 (1) – 직접 계산

__3.3.0 viewportContext

__3.3.1 scroll 이벤트 관찰 대상과 resize 관찰 대상 분리하기

__3.3.2 일반 HTML 요소에 대한 좌표 정보

__3.3.3 useStyleInsideViewport

__3.3.4 마무리 – 코드 적용하기

3.4 화면을 벗어나지 않도록 처리 (2) anchor positioning

3.5 순수 자바스크립트 버전

__3.5.0 컨텍스트 대체하기 – 옵서버 패턴

__3.5.1 훅 대체하기 – 역할 축소

__3.5.2 툴팁 컴포넌트

3.6 정리

 

04: 반응형 텍스트박스

4.0 공통 코드 작성

4.1 canvas로 높이 계산

4.2 레플리카 기법

4.3 원본의 scrollHeight로 조절

4.4 순수 자바스크립트 버전

4.5 정리

 

05: 여러줄 말줄임

5.0 공통 코드 작성

5.1 canvas로 줄 수 계산

5.2 레플리카 기법

5.3 원본의 scrollHeight로 조절

5.4 순수 자바스크립트 버전

5.5 정리

 

06: 폼 제어

6.0 공통 코드 작성

6.1 숫자 구분 기호 자동 완성 인풋

__6.1.0 구분 기호를 표기하는 방법

__6.1.1 사용자 입력 즉시 구분 기호 삽입하기

__6.1.2 커서 이동 및 백스페이스 문제 해결

__6.1.3 최초 포커스 시 커서 이동시키기

__6.1.4 유효성 검사

6.2 복잡한 폼 제어

__6.2.0 제어 컴포넌트 vs 비제어 컴포넌트, 제어 폼 vs 비제어 폼

__6.2.1 비제어 폼

__6.2.2 제어 폼

6.3 커스텀 훅

6.4 정리

 

07: 지연 로딩

7.0 공통 코드 작성

7.1 직접 계산

__7.1.0 기본 코드 작성

__7.1.1 화면 안에 있는지 판단하기

7.2 Intersection Observer (+ native)

__7.2.0 Intersection Observer 훅 적용

__7.2.1 HTML loading 속성 활용

7.3 순수 자바스크립트 버전

__7.3.0 useIntersectionObserver 훅 대체하기

__7.3.1 지연 로딩 함수

__7.3.2 지연 로딩 이미지 컴포넌트

7.4 미리 보기 제공

7.5 정리

 

08: 페이지네이션과 무한 스크롤

8.0 공통 코드 작성

8.1 전통적인 페이지네이션 - 내비게이션 바

__8.1.0 기본 구성

__8.1.1 서버 응답 시간 Mocking하기

__8.1.2 훅으로 추출

__8.1.3 내비게이션 바 컴포넌트 분리

__8.1.4 최대 페이지 제한 기능 추가

__8.1.5 최대 페이지를 알 수 없는 경우

8.2 무한 스크롤

__8.2.0 무한 스크롤 기능 구현

__8.2.1 원인 분석 및 문제 해결

8.3 순수 자바스크립트 버전

8.4 무한 스크롤 성능 최적화

__8.4.0 Windowing #1

__8.4.1 Windowing #2

__8.4.2 CSS content-visibility: auto;

8.5 정리

 

09: 캐러셀

9.0 공통 코드 작성

9.1 기본 캐러셀

9.2 스크롤 박스

__9.2.0 화면 단위로 이동하는 스크롤 박스

__9.2.1 스크롤 박스 캐러셀

__9.2.2 기본 캐러셀 vs. 스크롤 박스

9.3 무한 캐러셀

9.4 심화 - 3D 캐러셀

9.5 정리

 

10: 스크롤 스파이

10.0 공통 코드 작성

10.1 스크롤 이벤트

10.2 Intersection Observer

10.3 내비게이션에 스크롤 박스 적용

__10.3.0 스크롤 박스 컴포넌트 분리

__10.3.1 스크롤 초점 이동 1- ScrollBox에서 자동으로 수행

__10.3.2 스크롤 초점 이동 2- 상위 컴포넌트에서 명령

10.4 정리

 

11: 스낵바

11.0 공통 코드 작성

11.1 순수 자바스크립트 버전

11.2 Context

11.3 Portal

__11.3.0 Portal을 컴포넌트에서 호출

__11.3.1 portal을 훅에서 전달

11.4 정리

 

12: 모달

12.0 공통 코드 작성

12.1 Context

__12.1.0 컴파운드 컴포넌트 Compound Component

__12.1.1 modalContext useModal

__12.1.2 실제 모달 컴포넌트 작성 및 적용

__12.1.3 스크롤 이슈 파악 및 해결

__12.1.4 데이터 동기화 문제

12.2 createPortal + context + HOC

__12.2.0 기본 동작 구현

__12.2.1 스크롤 이슈 해결

12.3 순수 자바스크립트 버전

12.4 HTML dialog (1)

12.5 컨텍스트 외부에서 모달 호출

__12.5.0 외부에서 제어 가능하도록 만들기

__12.5.1 모달을 열 때 값 전달 가능하도록 변경

12.6 정리

 

13: 팝오버

13.0 공통 코드 작성

13.1 콘텐츠 내부에서 그대로 렌더링

13.2 createPortal

13.3 HTML dialog

13.4 popover 속성

13.5. 정리

 

14: 드롭다운

14.0 공통 코드 작성

14.1 컴파운드 컴포넌트

__14.1.0 기본 기능 구현

__14.1.1 외부 클릭 시 닫힘 처리 (1)

__14.1.2 외부 클릭 시 닫힘 처리 (2)

__14.1.3 키보드 입력 시 기능 구현

14.2 헤드리스 컴포넌트 Headless Component HTML dialog

__14.2.0 render 패턴

__14.2.1 훅 패턴

__14.2.2 컴파운드 컴포넌트 vs. 헤드리스 컴포넌트

14.3 createPortal

14.4 정리

 

15: 자동완성

15.0 공통 코드 작성

15.1 정적인 자동완성

15.2 네트워크 요청에 의한 자동완성

15.3 정리

 

16: 갤러리

16.0 공통 코드 작성

16.1 컴포넌트 재활용 – 지연로딩, 스크롤박스,

16.2 모달, 캐러셀

16.3 라이트박스 갤러리

16.4 정리

 

17: 심화 - 경로 처리

17.0 경로 처리를 위한 routes 하위 컴포넌트

17.1 경로-컴포넌트 매핑

__17.1.0 중첩 객체(nested object)로 구성

__17.1.1 단일 깊이의 객체로 구성

__17.1.2 GNB 컴포넌트

17.3 routeMap 파일 수정 - 최종 코드

 

▣ 부록: 의존 파일 모음

출판사 서평

저자 소개
저자 : 정재남
도서리뷰 (0)
이 책을 읽고 어떤 느낌을 받으셨나요? 리뷰를 남기고 다른 독자들과 함께 공유해보세요.

등록된 리뷰가 없습니다

첫번째 리뷰어가 되어주세요

교환/반품/환불
반품/교환방법
  • 마이페이지 > 주문관리 > 주문/배송조회 > 주문조회 후  [1:1상담신청]  또는 고객센터 (1544-9020)
  • ※ 오픈마켓, 해외배송 주문상품 문의 시 [1:1상담신청] 또는 고객센터 (1544-9020)
반품/교환 가능기간
  • 변심반품의 경우 수령 후 7일 이내
  • 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용
  • 단순변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
  • 해외직배송 도서 구매 후 단순변심에 의한 취소 및 반품 시 도서판매가의 20% 수수료 부과
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 만화, 잡지, 수험서 및 문제집류
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
상품 품절
  • 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는 이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁 해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

매장에서 사용할 수 있는 바코드가 있어요!