피드로 돌아가기
Node.js BlogBackend
원문 읽기
Node.js 8.5.0이 V8 스냅샷 재활성화, ESM 지원, 성능 타이밍 API 추가로 ECMAScript 모듈과 브라우저 호환 기능 도입
Node.js 8.5.0 (Current)
AI 요약
Context
Node.js는 CommonJS 기반의 모듈 시스템만 지원했으며, 개발자들이 ECMAScript 모듈(ESM) 표준을 사용할 수 없었다. 또한 브라우저에서 제공하는 Performance Timing API와 같은 표준 인터페이스가 Node.js에는 구현되어 있지 않아 크로스플랫폼 코드 호환성에 한계가 있었다.
Technical Solution
- ESM 지원 추가: --experimental-modules 플래그와 .mjs 확장자를 통해 ECMAScript 모듈 실행 가능하게 구현
- V8 스냅샷 재활성화: V8 엔진의 빌드 스냅샷 기능 복구로 #14875를 해결
- Performance Timing API 도입: 브라우저와 동일한 Performance Timing API를 Node.js에 구현하고 mark()와 measure() User Timing API 포함
- console.group() 최소 구현: console 모듈에 그룹화 기능 추가
- 의존성 업그레이드: libuv를 1.14.1로, nghttp2를 v1.25.0으로 업데이트
- fs.copyFile과 fs.copyFileSync 추가: 파일 복사 기능을 더 효율적으로 처리할 수 있는 전용 메서드 제공
- dns.lookup() verbatim 옵션 추가: DNS 리졸버 결과를 IPv6 앞에 IPv4를 정렬하지 않고 그대로 반환하는 옵션 제공
- 비동기 스택 추적 활성화: inspector에서 async 스택 트레이스 지원
- CIDR 표기법 지원: os.networkInterfaces() 메서드 출력에 CIDR 표기법 추가
Key Takeaway
Node.js가 브라우저 표준(ESM, Performance API)을 채택하면서 JavaScript 생태계의 통합이 진행되고 있으며, 동시에 DNS, 파일 I/O, 네트워크 인터페이스 같은 시스템 레벨 기능들이 세밀한 옵션으로 확장되는 추세를 보여준다.
실천 포인트
Node.js 기반 서비스를 개발할 때 --experimental-modules 플래그로 .mjs 확장자 파일을 실행하면 표준 ECMAScript 모듈 문법을 사용할 수 있으며, perf_hooks 모듈의 mark()와 measure() API를 활용하면 브라우저와 동일한 방식으로 성능 측정 지점을 기록할 수 있다.