DevTools의 새로운 기능 (Chrome 70)

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

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

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

콘솔의 실시간 표현식

값을 실시간으로 모니터링하려면 실시간 표현식을 Console 상단에 고정합니다.

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

    Live Expression UI

    그림 1. 실시간 표현식 UI

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

    실시간 표현식 UI에 Date.now()를 입력합니다.

    그림 2. Live Expression UI에 Date.now() 입력

  3. 실시간 표현식 UI 외부를 클릭하여 표현식을 저장합니다.

    저장된 실시간 표현

    그림 3. 저장된 실시간 표현식

실시간 표현식 값은 250밀리초마다 업데이트됩니다.

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

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

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

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

다음은 도움이 될 만한 표현입니다.

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

성능 패널 최적화

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

성능 데이터 처리 및 로드

그림 5. 성능 데이터 처리 및 로드

더 안정적인 디버깅

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

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

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

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

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

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

조건부 중단점 자동 완성

Autocomplete UI를 사용하여 조건부 중단점 표현식을 더 빠르게 입력할 수 있습니다.

자동 완성 UI

그림 7. 자동 완성 UI

알고 계셨나요? 자동 완성 UI는 Console을 구동하는 CodeMirror 덕분에 사용할 수 있습니다.

AudioContext 이벤트에서 중단

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

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

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

그림 8. Event Listener Breakpoints 창의 AudioContext 이벤트

ndb로 Node.js 앱 디버그

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

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

ndb UI

그림 9. ndb UI

자세한 내용은 ndb의 리드미를 참고하세요.

보너스 팁: 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, Dev 또는 베타를 기본 개발 브라우저로 사용하는 것이 좋습니다. 이러한 미리보기 채널을 사용하면 최신 DevTools 기능에 액세스하고, 최신 웹 플랫폼 API를 테스트하고, 사용자가 발견하기 전에 사이트에서 문제를 찾을 수 있습니다.

Chrome DevTools팀에 문의하기

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

DevTools의 새로운 기능

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