[jquery] PHPStorm IDE의 비효율적 인 jQuery 사용 경고

최근에 PHPStorm IDE 버전을 업그레이드했는데 이제 비효율적 인 jQuery 사용에 대해 경고합니다.

예를 들면 :

var property_single_location = $("#property [data-role='content'] .container");

이 경고를 표시합니다.

jQuery 선택기가 효율적인 방식으로 사용되는지 확인합니다. ID 선택 자로 시작하는 하위 선택자를 분할하고 캐시 될 수있는 중복 선택자에 대해 경고합니다.

그래서 제 질문은 :

이것이 왜 비효율적이며 위의 선택기를 수행하는 효율적인 방법은 무엇입니까?

나는 추측한다 :

var property_single_location = $("#property").find("[data-role='content']").find(".container");

이것이 올바른 방법입니까?



답변

오늘도 같은 질문이 있었고 여기 Scott Kosman 덕분에 해결책을 찾을 수있었습니다 .

기본적으로 답은 ID를 개별적으로 선택한 다음 .find(...)아래 항목에 사용 하는 것입니다. 따라서 귀하의 예를 들어 :

$("#property [data-role='content'] .container");

이를 이렇게 변경하면 PhpStorm이 행복 해지고 분명히 두 배 이상 빨라질 수 있습니다 .

$("#property").find("[data-role='content'] .container");


답변

최신 버전의 jQuery와 브라우저를 사용할 때 두 가지 방법의 차이는 무시할 만하다고 생각합니다. 나는 id에 대한 선택보다 결합 된 선택기를 수행하는 것이 실제로 10 % 더 빠르다는 것을 보여주는 테스트를 구성한 다음 매우 간단한 경우를 찾습니다.

http://jsperf.com/jquery-find-vs-insel

클래스별로 여러 하위 항목을 선택하는 경우 “찾기”가 더 빠른 것처럼 보입니다.

http://jsperf.com/jquery-find-vs-insel/7

jQuery 포럼에서 이에 대한 논의가 있었지만 3 년이되었습니다.
https://forum.jquery.com/topic/which-jquery-selection-is-efficient
여기에서 지적했듯이 동일한 ID 선택자에 대한 작업을 수행 할 때 최상위 요소를 캐싱하면 성능이 가장 크게 향상됩니다. 반면에 몇 가지 선택 만 수행하는 경우 성능 차이가 거의 없습니다.

따라서 IntelliJ가이 코드 스타일의 중요성을 과장하고 있다고 생각합니다.


답변

첫 번째 질문은 Alt + Enter를 누르고 목록에서 첫 번째 팁을 선택한 다음 Enter를 누르는 것입니다. 가장 효율적인 방법이 무엇인지 확인할 수 있습니다.


답변