DevTools의 새로운 기능 (Chrome 70)

Kayce Basques
Kayce Basques

환영합니다 Chrome 68 업데이트 이후 약 12주가 지났습니다. 게시물을 작성할 만한 새로운 기능이나 UI 변경사항이 충분하지 않아 Chrome 69는 건너뛰었습니다.

Chrome 70의 DevTools에 적용되는 새로운 기능과 주요 변경사항은 다음과 같습니다.

계속 읽거나 이 문서의 동영상 버전을 시청하세요.

콘솔의 라이브 표현식

값을 실시간으로 모니터링하려면 라이브 표현식을 콘솔 상단에 고정하세요.

  1. 실시간 표현식 만들기 실시간 표현식 만들기를 클릭합니다. 실시간 표현식 UI가 열립니다.

    라이브 표현식 UI

    그림 1. 라이브 표현식 UI

  2. 모니터링할 표현식을 입력합니다.

    라이브 표현식 UI에 Date.now()를 입력하는 모습

    그림 2. 실시간 표현식 UI에 Date.now() 입력

  3. Live Expression UI 외부를 클릭하여 표현식을 저장합니다.

    저장된 실시간 표현식입니다.

    그림 3. 저장된 라이브 표현식

Live Expression 값은 250밀리초마다 업데이트됩니다.

적극적 평가 중에 DOM 노드 강조 표시

이제 콘솔에 DOM 노드로 평가되는 표현식을 입력하면 즉시 평가가 뷰포트에서 해당 노드를 강조 표시합니다.

콘솔에 document.activeElement를 입력하면 뷰포트에서 노드가 강조 표시됩니다.

그림 4. 현재 표현식이 노드로 평가되므로 해당 노드가 뷰포트에서 강조 표시됩니다.

다음은 유용할 수 있는 표현입니다.

  • 현재 포커스가 있는 노드를 강조 표시하는 document.activeElement
  • document.querySelector(s): 임의 노드를 강조 표시합니다. 여기서 s는 CSS 선택기입니다. 이는 DOM 트리에서 노드 위로 마우스를 가져가는 것과 동일합니다.
  • DOM 트리에서 현재 선택된 노드를 강조 표시하는 $0
  • $0.parentElement를 눌러 현재 선택된 노드의 상위를 강조 표시합니다.

성능 패널 최적화

이전에는 대규모 페이지를 프로파일링할 때 성능 패널에서 데이터를 처리하고 시각화하는 데 수십 초가 걸렸습니다. 요약 탭에서 이벤트를 클릭하여 자세히 알아보는 데도 몇 초가 걸리는 경우가 있었습니다. Chrome 70에서는 처리 및 시각화가 더 빠릅니다.

실적 데이터를 처리하고 로드합니다.

그림 5. 실적 데이터 처리 및 로드

더 안정적인 디버깅

Chrome 70에서는 중단점이 사라지거나 트리거되지 않는 문제를 일으키는 일부 버그가 수정되었습니다.

소스 맵과 관련된 버그도 수정합니다. 일부 TypeScript 사용자는 코드를 단계별로 실행하는 동안 특정 TypeScript 파일을 무시하도록 개발자 도구에 지시하지만 개발자 도구는 번들로 묶인 전체 JavaScript 파일을 무시합니다. 이러한 수정사항은 소스 패널이 일반적으로 느리게 실행되는 문제를 해결합니다.

명령 메뉴에서 네트워크 제한 사용 설정

이제 명령 메뉴에서 네트워크 제한을 빠른 3G 또는 느린 3G로 설정할 수 있습니다.

명령어 메뉴의 네트워크 제한 명령어

그림 6. 명령 메뉴의 네트워크 제한 명령어

조건부 중단점 자동 완성

자동 완성 UI를 사용하여 조건부 중단점 표현식을 더 빠르게 입력합니다.

자동 완성 UI

그림 7. 자동 완성 UI

알고 계셨나요? 자동 완성 UI는 콘솔도 지원하는 CodeMirror 덕분에 가능합니다.

AudioContext 이벤트에서 중단

이벤트 리스너 중단점 창을 사용하여 AudioContext 수명 주기 이벤트 핸들러의 첫 번째 줄에서 일시중지합니다.

AudioContext는 오디오를 처리하고 합성하는 데 사용할 수 있는 Web Audio API의 일부입니다.

이벤트 리스너 중단점 창의 AudioContext 이벤트

그림 8. 이벤트 리스너 중단점 창의 AudioContext 이벤트

ndb로 Node.js 앱 디버깅

ndb는 Node.js 애플리케이션을 위한 새로운 디버거입니다. ndb는 DevTools를 통해 제공되는 일반적인 디버깅 기능 외에도 다음 기능을 제공합니다.

  • 하위 프로세스 감지 및 연결
  • 모듈 앞에 중단점을 배치해야 합니다.
  • DevTools UI 내에서 파일을 수정합니다.
  • 기본적으로 현재 작업 디렉터리 외부의 모든 스크립트를 무시합니다.

ndb UI

그림 9. ndb UI

자세한 내용은 ndb의 README를 참고하세요.

보너스 팁: User Timing API로 실제 사용자 상호작용 측정

실제 사용자가 페이지에서 중요한 여정을 완료하는 데 걸리는 시간을 측정하고 싶으신가요? User Timing API를 사용하여 코드를 계측하는 것이 좋습니다.

예를 들어 사용자가 클릭 유도 문구 (CTA) 버튼을 클릭하기 전에 홈페이지에서 보내는 시간을 측정한다고 가정해 보겠습니다. 먼저 DOMContentLoaded와 같은 페이지 로드 이벤트와 연결된 이벤트 핸들러에서 여정의 시작을 표시합니다.

document.addEventListener('DOMContentLoaded', () => {
  window.performance.mark('start');
});

그런 다음 버튼을 클릭하면 여정의 끝을 표시하고 기간을 계산합니다.

document.querySelector('#CTA').addEventListener('click', () => {
  window.performance.mark('end');
  window.performance.measure('CTA', 'start', 'end');
});

측정값을 추출하여 분석 서비스로 쉽게 전송하여 익명의 집계 데이터를 수집할 수도 있습니다.

const CTA = window.performance.getEntriesByName('CTA')[0].duration;

DevTools는 성능 기록의 사용자 타이밍 섹션에 사용자 타이밍 측정값을 자동으로 표시합니다.

사용자 타이밍 섹션

그림 10. 사용자 시간 섹션

이는 코드를 디버깅하거나 최적화할 때도 유용합니다. 예를 들어 수명 주기의 특정 단계를 최적화하려면 수명 주기 함수의 시작과 끝에서 window.performance.mark()를 호출합니다. React는 개발 모드에서 이 작업을 실행합니다.

미리보기 채널 다운로드

Chrome Canary, 개발자 또는 베타를 기본 개발 브라우저로 사용하는 것이 좋습니다. 이러한 미리보기 채널을 통해 최신 DevTools 기능에 액세스하고, 최첨단 웹 플랫폼 API를 테스트하고, 사용자가 문제를 발견하기 전에 사이트에서 문제를 찾을 수 있습니다.

Chrome DevTools팀에 문의하기

다음 옵션을 사용하여 새로운 기능, 업데이트 또는 DevTools와 관련된 기타 사항을 논의하세요.

DevTools의 새로운 기능

DevTools의 새로운 기능 시리즈에서 다룬 모든 항목의 목록입니다.