> 웹 프론트엔드 > JS 튜토리얼 > jQuery 성능 최적화를 위한 38가지 제안_jquery

jQuery 성능 최적화를 위한 38가지 제안_jquery

WBOY
풀어 주다: 2016-05-16 16:57:06
원래의
859명이 탐색했습니다.

1. jQuery 변수 정의 시 var 키워드 추가에 주의하세요
이것은 jQuery뿐만 아니라 모든 자바스크립트 개발 과정에서 주의해야 할 사항입니다.
$loading = $('#loading'); //전역 정의입니다. 실수로 어딘가에서 동일한 변수 이름을 참조하면 우울해집니다.
2. 제발 var를 사용하여 변수 정의
여러 변수를 사용하는 경우 다음과 같이 정의하세요.

코드 복사 코드는 다음과 같습니다.
var page = 0,
$loading = $('#loading'),
$body = $('body');

모든 변수에 추가하지 마세요 var 키워드는 심한 강박장애가 있는 경우를 제외하고는
3. $ 기호를 추가하여 jQuery 변수를 정의하세요
변수를 선언하거나 정의할 때 꼭 기억해주세요 jQuery 변수를 정의하는 경우 다음과 같이 변수 앞에 $ 기호를 추가하세요.
var $ loading = $('#loading');

이렇게 정의하면 자신이나 코드를 읽는 다른 사용자에게 효과적으로 상기시킬 수 있다는 장점이 있습니다. 이것이 jQuery 변수라는 것입니다.
4. DOM 운영 시 캐시를 기억해주세요
jQuery 코드 개발에서 DOM 운영은 리소스를 많이 소모하는 프로세스이며, 많은 사람들이 즐겨 사용하는 경우가 많습니다. jQuery는 다음과 같습니다.
코드를 복사합니다. 코드는 다음과 같습니다.

$('# loading' ).html('Complete');
$('#loading').fadeOut();

코드에는 문제가 없으며 정상적으로 실행하여 결과를 얻을 수도 있습니다. 하지만 정의할 때마다 주의하세요. 그리고 $('#loading')을 호출하면 실제로 새 변수가 생성됩니다. 이를 재사용해야 하는 경우 변수 내용을 효과적으로 사용할 수 있도록 변수에 정의해야 합니다.
코드 복사 코드는 다음과 같습니다.
var $loading = $(' #loading');
$loading.html('Finished');$loading.fadeOut();

이렇게 하면 성능이 향상됩니다.
5. 연쇄 연산 사용
위의 예를 더 간결하게 작성할 수 있습니다.
코드 복사 코드는 다음과 같습니다.

var $loading = $('#loading');
$loading.html('Complete').fadeOut();

6. jQuery 코드 간소화
일부 코드를 함께 통합해 보세요. 다음과 같은 코드는 사용하지 마세요.
코드 복사 코드는 다음과 같습니다.

//! ! 악당
$button.click(function(){
$target.css('width','50%');
$target.css('border','1px solid #202020' ) ;
$target.css('color','#fff');
});

은 다음과 같이 작성해야 합니다.
코드 복사 코드는 다음과 같습니다.
$button.click(function(){
$target.css({'width':'50% ','border':'1px solid #202020','color':'#fff'});
});

7. 전역 유형 선택기 사용을 피하세요
다음과 같이 쓰지 마세요: $('.something > *');
다음과 같이 쓰는 것이 좋습니다: $('.something').children();
8. 여러 개의 ID를 중복하지 마세요
다음과 같이 쓰지 마세요: $('#something #children');
충분합니다: $('#children');
9 . 더 논리적인 판단을 사용하세요 || 또는 && 속도를 높이세요
다음과 같이 작성하지 마세요:
코드 복사 코드는 다음과 같습니다.

if(!$something) {
$something = $('#something ');
}

쓰기 성능은 이 방법이 더 좋습니다:
코드 복사 코드는 다음과 같습니다.
$something= $something|| ('#뭔가');

10. 코드를 적게 사용하세요.
다음과 같이 작성하는 대신: if(string.length > 0){..}
다음과 같이 작성하세요. if(string. length) {..}
11. .on 메소드를 사용해 보세요.
최신 버전의 jQuery 클래스 라이브러리를 사용하는 경우 결국에는 .on을 사용하게 됩니다. .on.을 달성하기 위해.
12. 최신 버전의 jQuery를 사용해 보세요
최신 버전의 jQuery가 성능은 더 좋지만 최신 버전은 ie6/7/8을 지원하지 않을 수 있으므로 조정이 필요합니다. 실제 상황에 따라 상황 선택.
13. 네이티브 자바스크립트를 사용해 보세요
jQuery에서 제공하는 기능을 네이티브 자바스크립트로도 구현할 수 있다면 네이티브 자바스크립트를 사용하는 것이 좋습니다.
14. 항상 #id 선택기에서 상속합니다.
이것은 jQuery 선택기의 황금률입니다. jQuery에서 요소를 선택하는 가장 빠른 방법은 ID로 요소를 선택하는 것입니다.
코드 복사 코드는 다음과 같습니다.
$('#content').hide();

또는 ID 선택기에서 상속하여 여러 요소를 선택합니다.
코드 복사 코드는 다음과 같습니다.
$('#content p').hide();

15. 클래스 앞에 태그를 사용하세요
jQuery에서 두 번째로 빠른 선택자는 태그 선택기(예: $('head'))는 기본 Javascript 메소드 getElementByTagName()에서 직접 제공되기 때문입니다. 따라서 항상 태그를 사용하여 클래스를 수정하는 것이 가장 좋습니다(그리고 가장 가까운 ID를 잊지 마세요)
코드 복사 코드는 다음과 같습니다.
var receiveNewsletter = $('#nslForm input.on');

jQuery의 클래스 선택기는 IE 브라우저에서 모든 DOM 노드를 순회하므로 가장 느립니다. 클래스 선택기를 사용하지 마십시오. ID를 수정하는 데에도 태그를 사용하지 마세요. 다음 예에서는 모든 div 요소를 탐색하여 ID가 ​​'content'인 노드를 찾습니다.
코드 복사 코드는 다음과 같습니다. 다음:
var content = $('div#content'); // 매우 느립니다.

ID를 사용하여 ID를 수정하는 것은 불필요합니다.
코드 복사 코드는 다음과 같습니다.
var Traffic_light = $('#content #traffic_light') // 매우 느립니다.

을 사용하지 마세요. 16. 나중에 사용할 수 있도록 상위 개체를 캐시하려면 하위 쿼리
를 사용하세요

코드 복사 코드는 다음과 같습니다.
var header = $('#header');
var menu = header.find('.menu');
// 또는
var menu = $('.menu', header);

17. Sizzle의 "오른쪽에서 왼쪽" 모델에 적용 가능한 선택기
jQuery는 버전 1.3부터 ​​Sizzle 라이브러리를 사용하는데, 이는 선택기 엔진에서 작동하는 방식이 이전 버전과 매우 다릅니다. 이는 "오른쪽에서 왼쪽으로" 모델을 "왼쪽에서 오른쪽으로" 모델로 대체합니다. 가장 오른쪽 선택기가 구체적이고 왼쪽 선택기가 넓은지 확인하세요.
코드 복사 코드는 다음과 같습니다.
var linkContacts = $('.contact-links div.side-wrapper');


코드 복사를 사용하는 대신 🎜> 코드는 다음과 같습니다:
var linkContacts = $('a.contact-links .side-wrapper');

18. , 컨텍스트를 사용하지 않고
.find() 함수를 찾는 것이 실제로 더 빠릅니다. 그러나 페이지에 DOM 노드가 많으면 앞뒤로 검색하는 데 더 많은 시간이 걸릴 수 있습니다.

코드 복사 코드는 다음과 같습니다. 다음:
var divs = $('.testdiv', '#pageBody'); // Firebug 3.6에서는 2353
var divs = $('#pageBody').find('.testdiv' ); // Firebug 3.6에서 2324 - 가장 좋은 시간
var divs = $('#pageBody .testdiv') // Firebug 3.6에서 2469

19. 자체 선택기 작성
코드에서 선택기를 자주 사용하는 경우 jQuery의 $.expr[':'] 객체를 확장하고 자체 선택기를 작성하세요. 다음 예에서는 보이지 않는 요소를 선택하기 위해 Abovethefold 선택기를 만들었습니다.
코드 복사 코드는 다음과 같습니다.
$.extend($.expr[':'], {
위 부분: function(el) {
return $(el).offset().top < $(window) .scrollTop( ) $(window).height();
}
});
var nonVisibleElements = $('div:abovethefold') // 요소 선택

20. jQuery 객체 캐시
자주 사용하는 요소 캐시:
코드 복사 코드는 다음과 같습니다.

var header = $('#header');
var divs = header.find('div');
var form = header.find('form') ;

DOM 삽입이 필요한 경우 모든 요소를 ​​하나의 요소로 캡슐화하세요

21. Direct DOM 작업이 매우 느립니다. HTML 구조를 가능한 한 적게 변경하십시오.

코드 복사 코드는 다음과 같습니다.

var menu = '< ul id= "menu">';
for (var i = 1; i < 100; i ) {
menu = '
  • ' i '
  • ';
    }
    menu = '';
    $('#header').prepend(menu);
    // 절대 하지 마세요:
    $('#header') .prepend('

    }
    22. jQuery는 예외를 발생시키지 않지만 개발자는 객체도 검사해야 합니다

    jQuery는 사용자에게 많은 예외를 발생시키지 않지만 개발자는 이에 의존해서는 안 됩니다. jQuery는 일반적으로 객체가 존재하는지 여부를 결정하기 전에 쓸모없는 함수들을 실행합니다. 따라서 객체에 대한 일련의 참조를 만들기 전에 먼저 객체가 존재하는지 확인해야 합니다.
    스물셋. 등가 함수 대신 직접 함수를 사용하세요
    더 나은 성능을 위해서는 $.get(), $.ajax() 등의 직접 함수를 사용해야 합니다. getJSON(), $.post(), 후자는 $.ajax()를 호출하기 때문입니다.
    24. 나중에 사용하기 위해 jQuery 결과 캐시
    종종 javasript 애플리케이션 개체를 얻게 됩니다. 나중에 사용하기 위해 자주 선택하는 개체를 App을 사용하여 저장할 수 있습니다. 🎜>

    App.hiddenDivs = $('div.hidden ');
    // 그런 다음 애플리케이션을 호출합니다.
    App.hiddenDivs.find('span');

    25. jQuery의 내부 함수 데이터( )를 사용하여 상태를 저장합니다
    정보를 저장하려면 .data() 함수를 사용하는 것을 잊지 마세요.

    $('#head').data('name', 'value');
    // 그런 다음 애플리케이션에서 호출하세요.
    $('# head'). data('name');

    26. jQuery 유틸리티 함수 사용
    간단하고 실용적인 jQuery 유틸리티 함수를 잊지 마세요. 내가 가장 좋아하는 것은 $.isFunction(), $isArray() 및 $.each()입니다.
    27. HTML 블록에 "JS" 클래스 추가
    jQuery가 로드되면 먼저 HTML에 "JS"라는 클래스를 추가합니다

    코드 복사 코드는 다음과 같습니다.$('HTML').addClass('JS');
    사용자가 JavaScript를 활성화한 경우에만 CSS 스타일을 추가할 수 있습니다. 예:


    코드 복사 코드는 다음과 같습니다. /* in css*/
    .JS # myDiv{display:none;}

    따라서 JavaScript가 활성화되면 전체 HTML 콘텐츠를 숨기고 jQuery를 사용하여 원하는 결과를 얻을 수 있습니다(예: 특정 패널을 축소하거나 사용자가 클릭하면 확장). Javascript가 활성화되지 않은 경우 브라우저는 모든 콘텐츠를 렌더링하고 검색 엔진 크롤러도 모든 콘텐츠를 제거합니다. 나는 앞으로 이 기술을 더 많이 사용할 것이다.
    28. $(window).load로 연기
    때때로 $(window).load()가 $(document).ready()보다 빠릅니다. 왜냐하면 후자가 모든 DOM 요소보다 먼저 실행되기 때문입니다. 다운로드되었습니다. 사용하기 전에 테스트해야 합니다.
    29. 이벤트 위임 사용
    컨테이너에 많은 노드가 있고 이벤트를 모든 노드에 바인딩하려는 경우 위임은 이러한 애플리케이션 시나리오에 매우 적합합니다. 위임을 사용하면 상위에서 이벤트를 바인딩한 다음 어떤 하위 노드(대상 노드)가 이벤트를 트리거했는지 확인하기만 하면 됩니다. 이는 데이터가 많은 테이블이 있고 td 노드에 이벤트를 설정하려는 경우 매우 편리합니다. 먼저 테이블을 가져온 다음 모든 td 노드에 대한 위임 이벤트를 설정합니다.
    코드 복사 코드는 다음과 같습니다.
    $ ("테이블").delegate("td", "hover", function(){
    $(this).toggleClass("hover");
    });

    30. Ready Event 약어를 사용하세요
    js 플러그인을 압축해서 모든 바이트를 저장하고 싶다면 $(document).onready()
    코드 복사 코드는 다음과 같습니다.
    //
    $(document).ready(function ( ){
    // Code
    });
    // 다음과 같이 축약할 수 있습니다.
    $(function (){
    // Code
    });

    31. jQuery 단위 테스트
    JavaScript 코드를 테스트하는 가장 좋은 방법은 사람들에게 테스트를 맡기는 것입니다. 그러나 Selenium, Funcunit, QUIt, QMock과 같은 일부 자동화 도구를 사용하여 코드(특히 플러그인)를 테스트할 수 있습니다. 이 주제에 대해서는 할 말이 너무 많기 때문에 다른 주제에서 논의하고 싶습니다.

    12. jQuery 코드 표준화
    코드를 자주 표준화하여 어떤 쿼리가 더 느린지 확인하고 교체하세요. Firebug 콘솔을 사용할 수 있습니다. jQuery의 바로가기 기능을 사용하면 테스트를 더 쉽게 할 수도 있습니다.

    코드 복사 코드는 다음과 같습니다.
    // Firebug 콘솔에 데이터를 기록하는 단축키
    $.l($('div'));
    // UNIX 타임스탬프 가져오기

    $.time();

    // Firebug에 코드 실행 시간 기록

    $.lt();
    $('div');
    $.lt();

    // 실행 시간을 테스트하기 위해 for 루프에 코드 블록을 넣습니다.

    $.bm("var divs = $('.testdiv', '#pageBody');") // Firebug에서는 2353; 3.6


    33. HMTL5 사용
    새로운 HTML5 표준은 더 가벼운 DOM 구조를 제공합니다. 구조가 가벼우면 jQuery를 사용할 때 필요한 순회 횟수가 줄어들고 로딩 성능이 향상됩니다. 따라서 가능하다면 HTML5를 사용하시기 바랍니다.

    34. 15개 이상의 요소에 스타일을 추가하려면 DOM 요소에 직접 스타일 태그를 추가하세요.
    몇 가지 요소에 스타일을 추가하려면 jQuey CSS를 사용하는 것이 가장 좋습니다. () 기능. 하지만 15개 이상의 요소에 스타일을 추가할 때는 스타일 태그를 DOM에 직접 추가하는 것이 더 효과적입니다. 이 방법은 코드에 하드 코드를 사용하는 것을 방지합니다.

    코드 복사 코드는 다음과 같습니다.
    $('')
    .appendTo('head');

    35. 중복된 코드 로딩을 ​​피하세요
    Javascript 코드를 다른 파일에 넣어 필요할 때만 로딩하는 것이 좋습니다. 이렇게 하면 불필요한 코드와 선택기를 로드하지 않아도 됩니다. 코드 관리도 쉽습니다.
    36. 하나의 기본 JS 파일로 압축하고 다운로드 수를 최소한으로 유지하세요.
    어떤 파일을 로드할지 결정한 후 하나의 파일로 패키지하세요. Minify(백엔드 코드와 통합)를 사용하거나 JSCompressor, YUI Compressor 또는 Dean Edwards JS 패커와 같은 온라인 도구를 사용하여 파일을 압축하는 등 일부 오픈 소스 도구를 사용하여 자동으로 수행할 수 있습니다. 내가 가장 좋아하는 것은 JSCompressor입니다.
    37. 필요할 때 기본 Javascript를 사용하세요
    jQuery를 사용하는 것은 좋은 일이지만 이것이 Javascript를 위한 프레임워크이기도 함을 잊지 마세요. 따라서 jQuery 코드에서 필요할 때 기본 Javascript 함수를 사용하면 더 나은 성능을 얻을 수 있습니다.
    38. 속도 및 SEO 이점을 위한 지연 로드 콘텐츠는 로딩 속도를 향상시킬 뿐만 아니라 SEO 최적화도 향상시킵니다(속도 및 SEO 이점을 위한 지연 로드 콘텐츠)
    Ajax를 사용하여 웹사이트를 로드하세요. , 이를 통해 서버측 로딩 시간을 절약할 수 있습니다. 일반적인 사이드바 위젯으로 시작할 수 있습니다.
    관련 라벨:
    원천:php.cn
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    최신 이슈
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿