25. 프론트엔드 개발 시 개발자 도구를 활용한 경험 설명
프론트엔드 개발자 도구는 웹 개발자가 웹 애플리케이션을 디버깅하고 성능을 최적화하는 데 매우 유용하다. 크롬 개발자 도구(DevTools)를 기준으로 도구의 사용법과 주요 기능들을 소개한다.
개발자 도구 열기, 단축키
- Windows/Linux: F12 또는 Ctrl + Shift + I
- Mac: Cmd + Option + I
- 혹은 페이지에서 마우스 우클릭 → 검사
주요 기능 및 사용법
🪁 Elements 탭 : HTML & CSS 수정과 디버깅
- 실시간 수정 : HTML 요소와 CSS 스타일을 바로 수정.
요소 선택 후 CSS를 수정해 즉각적으로 UI 변화를 확인한다.
- 상태 변경 : 특정 요소의 상태(:hover, :active 등)를 강제적으로 적용해 확인할 수 있다.
- 레이아웃 확인 : DOM 구조와 CSS 박스 모델을 쉽게 확인할 수 있다.
- 마진, 패딩, 보더 등을 시각적으로 표시
➕ 사용 팁
- Copy as HTML : 특정 요소를 마우스 우클릭 후 HTML 복사
- Toggle Class : 새로운 클래스를 추가해보며 디자인 변경 테스트
🪁 Console 탭 : 오류 로그 및 테스트 코드 실행
- 오류 디버깅 : 페이지에 발생한 자바스크립트 오류가 표시된다.
- 테스트 코드 실행 : 직접 자바스크립트 코드를 입력하고 결과를 바로 확인할 수 있다.
(예 : document.querySelector('.my-element').textContent = 'Hello!')
- 로그 추적 : console.log()를 이용해 코드를 추적하고 디버깅.
➕ 사용 팁
- Filter : 오류 유형별로 필터를 적용해 로그를 깔끔하게 볼 수 있다.
- 변수 저장 : $0과 같은 단축 명령어로 Elements 탭에서 선택한 요소를 바로 사용할 수 있다.
🪁 Network 탭 : 네트워크 요청 분석
- API 요청 및 응답 확인 : REST API 호출의 요청과 응답을 자세히 볼 수 있다.
- 로드 시간 분석 : 페이지가 로딩되는 동안 각 리소스(이미지, CSS, JS)의 로드 시간을 보여준다.
- 캐시 비활성화 : 개발 중 캐시 문제를 방지하기 위해 캐시를 끌 수 있다.
➕ 사용 팁
- XHR/Fetch 필터 : API 호출만 따로 필터링하여 디버깅.
- Throttling : 네트워크 속도를 조절하여 느린 환경에서 성능 테스트.
🪁 Sources 탭 : 코드 디버깅
- 브레이크포인트 설정 : 특정 지점에 브레이크포인트를 설정해 코드 흐름을 멈추고 변수 상태를 확인한다.
- 워치(watch) 변수 : 변수의 변화를 실시간으로 추적 가능.
- 실행 흐름 제어 : 코드가 한 줄씩 실행되도록 조작하며, 오류 발생 지점을 찾는다.
➕ 사용 팁
- Blackbox script : 외부 라이브러리(예: jQuery)의 코드 실행 생략 가능
- Pretty Print : 난독화된 코드를 보기 쉽게 포맷팅한다.
- CPU 및 메모리 분석 : 페이지 렌더링과 스크립트 실행 시간을 측정.
- FPS 분석 : 애니메이션이나 스크롤 성능을 측정해 최적화 가능.
- 타임라인 기록 : 렌더링 과정에서 성능 병목 구간을 찾는다.
🪁 Application 탭 : 저장소와 캐시 관리
- 로컬 스토리지 및 세션 스토리지 : 브라우저 저장소에 저장된 데이터를 직접 확인하고 수정.
- 쿠키 관리 : 쿠키의 값을 보고 변경하거나 삭제할 수 있다.
- 서비스 워커 및 캐시 : PWA와 같은 애플리케이션의 캐시 및 오프라인 기능을 확인.
❓PWA?
🪁 Lighthouse 탭 : 웹사이트 성능과 품질 분석
- 성능 리포트 생성 : 페이지의 성능, 접근성, SEO를 평가하고 개선점을 제안한다.
- 모바일/데스크톱 분석 : 각 환경에서의 최적화 수준을 점검한다.
🪁 Device Mode
- 반응형 디자인 테스트 : 개발자 도구의 톱바에서 "장치 모드(Device Mode)"를 활성화하여 다양한 화면 크기와 해상도를 시뮬레이션할 수 있다.
- 모바일 디바이스 시뮬레이션 : 터치 이벤트를 테스트하거나 다양한 해상도를 미리 보기한다.
➡️ 개발자 도구는 실시간 디버깅, 코드 수정, 성능 분석 등 다양한 작업을 지원하여 개발 시간을 시킨다. 이를 능숙하게 사용하면 프론트엔드 개발뿐만 아니라 웹 애플리케이션의 디자인, 성능 최적화, 오류 해결에 큰 도움이 된다.