
Next.js はじめ方(feat. 地図サービス開発)
vroomfan
Next.jsの基本を扱う講座です。 Next.jsで地図サービスを最初から最後まで開発してみます。
초급
Next.js, SEO, vercel
실무에 적용할 수 있는 Web API를 다룹니다. 한 번쯤 꼭 마주치게 될 요구사항들을 풀어낼 무기를 얻어가시길 바랍니다.
브라우저에서 Web API가 작동하는 원리
Web Worker로 부하를 줄이는 방법
서로 다른 context(window, tab, iframe 등)가 통신하는 방법
Timer, Animation을 보다 정확하게 사용하는 방법
꼼꼼한 FE 개발자를 위한 Web API
다양한 예제를 통한 쉽고 빠른 이해!
FE 개발을 하면서 자연스럽게 접하게 되는 fetch, setTimeout 뿐만 아니라 Worker, MessageChannel, MutationObserver 등 따로 공부해야하는 API도 있습니다.
일반적인 FE 기능 구현을 넘어, 탭 비활성화 상황 대응/서로 다른 탭간 데이터 전송/중복 서버 요청 줄이기 등 꼼꼼한 버그 대응과 최적화를 위해서는 Web API가 필수적입니다.
실무를 진행하면서 까다로운 요구사항을 구현하거나, 일반적이지 않은 버그 상황에 대응하거나, 성능을 최적화하는 등 다양한 문제를 Web API로 풀 수 있음을 알게 되었습니다.
실무에서 접할 수 있는 상황을 반영한 예제들을 통해 세부적인 요구사항을 Web API로 구현하는 법을 알아가시면 좋겠습니다.
지도 위에서 사용자의 이동 동선 시각화하기
시간 정보가 포함된 좌표 데이터를 기반으로, 경과한 시간마다 지도 위에 선을 그려 이동 경로를 시각화해야 해야합니다. 데이터는 아래와 같습니다.
[{ lng: 127.10, lat: 37.50, time: 1000ms },
{ lng: 127.11, lat: 37.51, time: 1700ms },
{ lng: 127.12, lat: 37.52, time: 2100ms }, ...]
setTimeout(drawLine, 1000); setTimeout(drawLine, 1700 - 1000); setTimeout(drawLine, 2100 - 1700); ...
이렇게 각 time
에 맞춰 setTimeout을 연속으로 호출하면 될까요?
setTimeout이 의도대로 동작하지 않는 상황도 있을까요? 있다면 어떻게 대응해야 할까요?
여러 탭의 데이터 동기화하기
탭 A의 게시글 작성 페이지에서 새 글을 작성했을 때, 탭 B의 게시글 목록 페이지에서도 작성한 새 글이 바로 노출되어야합니다.
탭 A에서 새 글을 작성 했을때 해당 게시글에 대한 정보를 탭 B에게 넘기고, 탭 B에서 이 값을 이용해 목록 상태(state)를 업데이트하면 될까요?{ type: 'newPost', title: 'title_1', author: 'author_1', ... }
탭 A에서 새 글이 작성됐다는 신호를 탭 B에게 보내고, 탭 B에서 이 정보를 받았을 때 목록을 불러오는 API를 다시 호출하면 될까요?
{ type: 'refetchPosts' }
그렇다면 서로 다른 탭 사이에 위와 같은 데이터를 주고받는 방법은 무엇일까요?
Chromium 코드를 통해 Web API가 동작하는 원리 이해
탭이 비활성화 되었을 때 Timer의 동작과 대응 방법
Worker로 메인 쓰레드 부하 줄이기
WebSocket 연결을 최소화하여 서버 부하 줄이기
서로 다른 browsing context간 데이터 전송하기
애니메이션을 css가 아닌 js로 제어하기
실무를 위한 추가적인 Web API
브라우저 소스 코드를 통해 Web API가 자바스크립트의 기능을 어떻게 확장하는지, 브라우저에서 어떻게 구현되어 동작하는 것인지 학습합니다.
탭이 비활성화 되었을 때 setTimeout이 어떻게 동작하는지 확인하고, 타이머를 정확하게 구현하기 위한 방법을 학습합니다.
메인 스레드나 서버에 부하가 발생하는 상황을 Worker를 이용해 해결하는 방법을 학습합니다.
서로 다른 Window, 서로 다른 Tab, Shadow DOM 같은 격리 상황에서 통신을 가능하게하는 Web API를 학습합니다.
애니메이션을 Web Animation API와 requestAnimationFrame으로 제어하는 방법을 학습합니다.
MutationObserver, requestIdleCallback 등 실무를 위한 추가적인 Web API 수업이 업데이트됩니다.
Q. 강의 난이도는 어느 정도인가요?
기본적인 React 문법, 이벤트 루프 개념, 웹 관련 기초 지식은 알고 있다고 가정하고 진행됩니다. 기초 지식만 있다면 새로운 Web API는 쉽게 따라오실 수 있습니다. 수업자료에서 이해가 되지 않는 코드가 있다면 편하게 질문 남겨주시길 바랍니다.
Q. 수업은 어떤 방식으로 진행되나요?
섹션마다 새로운 문제 상황이 제시됩니다. 문제 상황을 기본적인 JS/CSS로 풀어내는 방법을 먼저 살펴보고, 해당 코드에서 발생할 수 있는 버그나 예외 상황을 알아봅니다. 그리고 문제를 더 꼼꼼하게 해결하기 위한 Web API를 소개해드리고 Web API로 원하는 기능을 구현합니다.
Q. 수업에서 사용하는 특별한 라이브러리가 있나요?
자바스크립트 Web API 강의이기 때문에 따로 라이브러리를 배울 필요는 없습니다. 다만 매끄러운 수업 진행을 위해 zod(TS validation), ws(웹소켓) 등의 라이브러리가 package.json에 포함되어 있습니다.
💾 수강 전 참고 사항
Web, Javascript, React에 대한 기초 지식을 필요로 합니다.
수업에 사용된 전체 소스 코드를 제공합니다. 수업에서 코드를 한 줄씩 읽지는 않고 수업 진행에 필요한 부분만 읽기 때문에 코드를 같이 보시는 것을 추천합니다.
👨🎓 권장 학습 방법
제공되는 수업자료 코드와 수업 영상을 함께 보며 수업을 들으시면 좋습니다.
섹션 마지막에 출제되는 미션은 스스로 풀어보시는 것을 권장합니다.
학습 대상은
누구일까요?
실무에서 setTimeout, fetch Web API만 사용하고 계신 분
까다로운 요구사항을 Web API 개념으로 풀어내고 싶으신 분
선수 지식,
필요할까요?
React, Javascript 기본 문법
npm 사용법
1,015
명
수강생
48
개
수강평
87
개
답변
4.5
점
강의 평점
2
개
강의
안녕하세요.
스타트업에서 4년동안 프론트엔드 개발자로 일하고 있습니다.
React, Next.js, 지도, 차트, UI library 등을 다룹니다.
전체
25개 ∙ (2시간 5분)
해당 강의에서 제공:
₩19,800
지식공유자님의 다른 강의를 만나보세요!
같은 분야의 다른 강의를 만나보세요!