- 약 10년 만의 메이저 버전 업데이트로, jQuery 4.0.0이 정식 공개됨
- IE 10 이하 및 구형 브라우저 지원 중단, 코드 경량화와 현대적 표준 준수 강화, 대부분의 사용자는 코드 변경 없이 업그레이드 가능
- ES 모듈 기반 구조 전환으로 Rollup 빌드 도입, 최신 개발 환경과 호환성 확보
- Trusted Types 및 CSP 지원 추가로 보안 정책과의 충돌 최소화
- Deprecated API 제거 및 slim 빌드 축소로 성능 향상과 유지보수성 개선
jQuery 4.0.0 주요 개요
- jQuery 4.0.0은 약 10년 만의 대규모 메이저 릴리스로, 오랜 개발 주기와 여러 프리릴리스를 거쳐 완성됨
- 대부분의 사용자는 코드 변경 없이 업그레이드 가능
- 이전 버전에서 누적된 레거시 코드와 비공개 파라미터 제거
- 업그레이드 가이드와 jQuery Migrate 플러그인이 함께 제공되어 이전 버전에서의 전환을 지원
- 배포는 공식 CDN 및 npm을 통해 가능하며, 타 CDN은 순차적으로 업데이트 예정
브라우저 지원 변경
- IE 10 이하 지원 중단, IE 11은 jQuery 5.0에서 단계적으로 제거 예정
- Edge Legacy, iOS 구버전(최근 3버전 이전), Firefox 구버전(최근 2버전 이전), Android Browser 지원 중단
- 구형 브라우저를 지원해야 하는 경우 jQuery 3.x 유지 권장
Trusted Types 및 CSP 호환성
- TrustedHTML 객체를 안전하게 처리하도록 Trusted Types 지원 추가
- 대부분의 비동기 스크립트 요청을 `` 태그 기반으로 전환, CSP 오류 방지
-
"headers"옵션 사용 시에는 여전히 XHR 사용 가능하나,scriptAttrs사용 권장
-
ES 모듈 전환
- jQuery 소스가 AMD에서 ES 모듈로 완전 이전
- 기존 RequireJS 대신 Rollup을 빌드 도구로 채택
- ES 모듈 기반으로 테스트를 별도 수행
- ``을 통한 현대 브라우저 및 빌드 툴 호환성 확보
Deprecated API 제거
- 오랫동안 비권장 상태였던 API 완전 제거
- 제거된 함수:
jQuery.isArray,jQuery.parseJSON,jQuery.trim,jQuery.type,jQuery.now,jQuery.isNumeric,jQuery.isFunction,jQuery.isWindow,jQuery.camelCase,jQuery.nodeName,jQuery.cssNumber,jQuery.cssProps,jQuery.fx.interval - 대체:
Array.isArray(),JSON.parse(),String.prototype.trim(),Date.now()등 네이티브 메서드 사용
- 제거된 함수:
- IE 관련 코드 제거와 함께 gzip 기준 약 3KB 크기 감소
내부 전용 메서드 제거
- jQuery 프로토타입에서 내부용으로만 사용되던 push, sort, splice 메서드 삭제
-
$elems.push(elem)대신[].push.call($elems, elem)형태로 대체 가능
-
포커스 이벤트 순서 변경
-
W3C 명세에 따른 포커스/블러 이벤트 순서로 통일
- 새 순서: blur → focusout → focus → focusin
- 이전 jQuery 순서와 달라 호환성 주의 필요
- IE를 제외한 모든 브라우저가 동일한 순서로 동작
Slim 빌드 개선
-
Deferreds 및 Callbacks 제거로 파일 크기 약 19.5KB(gzip)로 축소
- 대부분의 브라우저가 네이티브 Promise 지원하므로 대체 가능
- IE11 지원 필요 시 메인 빌드 또는 Promise 폴리필 사용 권장
- Slim 빌드는 Ajax 및 애니메이션 관련 모듈을 제외해 약 8KB 더 작음
다운로드 및 배포
- 공식 CDN 및 npm에서 다운로드 가능
- npm 설치 명령:
npm install jquery@4.0.0
기여자 및 20주년 기념
- 다수의 오픈소스 기여자가 패치, 버그 리포트, 테스트에 참여
- jQuery 20주년을 맞아 Dallas에서 팀 재회, 창립자 John Resig도 Zoom으로 참여
주요 코드 변경 요약 (Changelog)
- Ajax: 바이너리 데이터 처리 개선, CSP 오류 방지, JSONP 오류 처리 강화
-
CSS: `` 요소 크기 계산 수정, CSS 변수 공백 처리 개선,
opacity훅 제거 -
Core:
AMD → ES 모듈전환,DOMParser사용, 구형 브라우저 대응 코드 삭제 -
Event: focus/blur 이벤트 네이티브 처리,
event.whichshim 제거 -
Selector: Sizzle 통합,
:has및:even/:odd개선,uniqueSort체이닝 추가 - Docs: HTTPS 링크 업데이트, README 및 CONTRIBUTING 문서 정비
-
Release: 빌드 및 배포 프로세스 자동화,
release-it기반으로 이전
요약
- jQuery 4.0.0은 현대 웹 표준과 보안 정책에 맞춘 구조적 개편 버전
- 레거시 코드 제거, ES 모듈화, 보안 강화, 경량화를 통해 장기 유지보수 기반 강화
- jQuery 생태계의 20주년을 기념하는 상징적 릴리스로 평가됨