자바 스크립트 :jQuery보다 JavaScript의 이벤트 위임을 사용하면 성능상의 이점이 있습니까?
parent.addEventListener("click", function(e) {
if (e.target === child) { code }
});
대
jQuery를 :
$(parent).on("click", child, function() {});
자바 스크립트 :jQuery보다 JavaScript의 이벤트 위임을 사용하면 성능상의 이점이 있습니까?
parent.addEventListener("click", function(e) {
if (e.target === child) { code }
});
대
jQuery를 :
$(parent).on("click", child, function() {});
한계, jQuery의 on
방법은 조금 더 많은 작업이 실행처럼, 당신에게 추가 기능을 제공하기 위해 않습니다 이벤트로 선택기가 루트까지 버블 링되므로 이벤트가 발생합니다. 당신이 기대하는 요소로부터; 조심하지 않으면 문제가 될 수 있습니다. documentation, 이벤트 성능 :
문서 트리 맨 위에 많은 위임 이벤트 처리기를 연결하면 성능이 저하 될 수 있습니다. 이벤트가 발생할 때마다 jQuery는 해당 유형의 모든 첨부 이벤트의 모든 선택기를 이벤트 대상에서 문서의 맨 위까지의 경로에있는 모든 요소와 비교해야합니다.
Plain javascript는 더 간단합니다. 그 요소 아래에서 일어난 모든 이벤트가 발생하기 때문에 매우 구체적이어야합니다.
그런데, 성능 차이는 몇 백 개 이벤트 핸들러와 같은 정상적인 환경에서 현대 엔진에서는 무시할 수 있습니다.
@ 패트릭이 지적했듯이, 수천 개의 요소를 추적하고 이벤트를 가져 오는 데 필요한 몇 가지 특수한 경우에는 재앙이 될 수 있습니다. 이 경우 각각의 이벤트에 대해 선택기를 실행하면 성능이 저하됩니다. 때로는 해당 요소의 컨테이너에 하나의 이벤트 핸들러를 연결하고 e.target
을 사용하여 실제로 이벤트의 원인을 찾는 것과 같은 특수 기술을 사용하면 도움이되는 경우가 있습니다.
DOM 이벤트의 경우처럼 작은 볼륨 이벤트 처리에서는 성능 차이가 미미하지만 파티클 시스템에서 볼 수있는 것과 같은 많은 이벤트에는 큰 차이가 있습니다. http://jsperf.com/jquery-events-vs-backbone-events-performance/3 –
그건 사실이야, 나는 결국 그런 경우에 대한 언급을 추가 :) –
에 따르면이 jsperf for event triggering performance에 따르면 jquery는 기본 이벤트와 백본 이벤트보다 훨씬 느립니다. 백본 이벤트는 jquery 또는 navtive 이벤트보다 훨씬 빠르게 진행됩니다.
jQuery는 "쓰기 쉬운"방식으로 코드를 래핑하기 때문에 순수한 자바 스크립트가 더 효율적일 수 있지만 성능 차이는 미미한데 ... 순수 자바 스크립트 메소드에는 라이브러리 의존성이 없습니다. – Kinnectus
jQuery는 내부적으로 똑같은 일을합니다. 선택기를 기반으로 필터를 적용하고, 이벤트 대상과 해당 선택 자의 부모를 확인합니다. 이는 일반 JS에서와 동일한 작업입니다. – adeneo