>  기사  >  웹 프론트엔드  >  웹 프런트엔드 디자인 패턴--디스플레이 성능 향상을 위한 돔 재구성_jquery

웹 프런트엔드 디자인 패턴--디스플레이 성능 향상을 위한 돔 재구성_jquery

WBOY
WBOY원래의
2016-05-16 18:17:551706검색
1. 디자인 장면


홈페이지에 제품 탐색 섹션이 있는데, 지연 로딩 중에 숨겨진 프레임 항목을 모두 표시합니다. (그림과 같이 원래 의도는 두 줄의 이미지를 표시하지만 로딩이 중단되고 아래의 일부 숨겨진 요소가 표시되었습니다.) 전체적인 그림이 거칠고 지저분했으며 전체 웹페이지가 완전히 로드되어 원활하게 실행되는 데 5초 이상 지연되었습니다. 극도로 성적인 온라인 인쇄 웹사이트는 매우 치명적이어서 사용자에게 극도로 나쁜 웹 경험을 제공하며 웹사이트의 불안정성으로 인해...

현재로서는 회사의 잘못을 비난할 수 없습니다. 나쁜 서버, 네트워크 속도 카드 등으로 인해 상사가 나를 때리거나 보너스를 공제할 수도 있습니다...
그래서 우리는 웹사이트 성능만 향상시킬 수 있습니다...

2. 디자인 목표
페이지 로딩 시 불필요한 요소를 줄이고 가벼운 웹페이지를 구축...

해결 방법
이 경우 초기 디자인 계획은 의심할 여지없이 히든 프레임 방식이 가장 사용하기 쉽고 라벨 탭 4개(사진첩, 핸드백, 벽걸이 달력, 포장)에 모두 대응하는 방식입니다. 페이지에 Div가 로드되며, 로드 시 첫 번째 탭(사진 앨범)의 Div가 탭 위로 이동하면 해당 탭 레이블의 Div가 표시되고 다른 탭 레이블의 Div는 표시됩니다. 숨겨진...
그래서 위의 상황이 발생했습니다. 전날 밤에 읽은 웹 디자인 패턴에 관한 책이 기억났습니다. 위의 구절이 내 관심을 끌었습니다. Dom 트리를 재구성하기 위해 페이지 요소 업데이트를 사용하는 것이 프레임을 숨기는 것보다 낫습니다. .성능이 훨씬 높아요... 그래서 이때 제가 생각한 것은 Dom 트리를 재구성하는 것입니다...

웹 페이지의 소스 코드는 매우 간단합니다. "tabcontent"는 위의 4개의
  • 태그에 따라 내부 요소가 변환된다는 점입니다. 처음에 모든 요소를 ​​로드하고 진행하면 숨기고 표시하는 수고를 덜게 되며 구현 코드는 다음과 같습니다. . .
    이렇게 하면 tabcontent1, tabcontent2, tabcontent3, tabcontent4라는 4개의 ID가 있는데, id="tabcontent"로 Div에 계속 순환해서 사용해보면 성능이 정말 훨씬 높아집니다...
    코드 복사 코드는 다음과 같습니다.


    < /div>





    코드 복사var num,ids,ordnum
    switch(i)
    {
    case 1:{append(1,1; ,"f") ; 중단;}
    사례 2:{ 추가(2,5,"s"); 중단;}
    사례 3:{ 추가(3,9,"t"); }
    사례 4:{ 추가(4,13,"fo"); break;}
    }
    }

    //데이터 업데이트
    함수 추가(i,j, 유형)
    {
    var str="
    "
    str ="
    ";
    str ="
    ";
    str ="
    ";
    str =" ";
    str ="
    ";
    str ="
    " ;
    str =""; >str ="< ;/div>";
    str ="
    "
    str ="< /div>< /div>
    ";
    $("#tabcontent").html(str);
    }


    이걸로 끝이어야 하는데 갑자기 질문이 생각났습니다. 이 접근 방식은 실제로 jQuery의 호버 아이디어와 동일하며, 여기에는 마우스가 레이블을 이동할 때마다 Dom 요소 업데이트에 대한 폴링이 포함됩니다. 전송 및 수신할 데이터가 있어야 하며 위의 작은 데이터에는 영향을 미치지 않습니다. 그러나 Dom 요소 업데이트가 10kb 또는 심지어 수십kb. 이는 의심할 여지 없이 웹 페이지의 성능에 큰 도전을 가져옵니다...

    그래서 저는 또 다른 작은 변화를 주었습니다. 즉, Dom을 사용하여 숨겨진 프레임 사용법을 재구성한 것입니다. 페이지에서 처음 로드 시 첫 번째 태그에 해당하는 Div, 즉 앨범에 해당하는 Div가 먼저 로드됩니다. 다른 탭 태그로 마우스를 이동하면 해당 태그에 해당하는 요소가 추가됩니다. 요소가 존재하는 경우 숨겨진 요소 제거) 그리고 존재하지 않는 경우 추가)를 표시하고 다른 탭 태그에 해당하는 Div 태그를 숨깁니다... 이 방법에는 "다단계 다운로드..."라는 이름이 있으므로 매번 요소를 업데이트할 필요가 없다는 코드는 다음과 같습니다.
    코드 복사 코드는 다음과 같습니다. 다음:

    //태그 숨기기
    함수 탭(i)
    {
    for(var j=1;j<5;j )
    {
    $("#tabcontent" j).hide();
    }
    $("#tabcontent" i).show()
    var num,ids,ordnum; ("#tabcontent" i).length;//이 문장은 매우 중요합니다. 요소를 반복적으로 로드한다는 판단을 없애줍니다. (요소가 있으면 다시 추가할 필요가 없습니다.)
    if(len== 0)
    {
    스위치(i)
    {
    케이스 1 :{ 추가(1,1,"f") break;}
    케이스 2:{ 추가(2,5) ,"s"); 중단;}
    사례 3:{ 추가(3,9, "t"); 중단;}
    사례 4:{ 추가(4,13,"fo"); }
    }
    }
    }

    //load 데이터 입력
    function Append(i,j,type)
    {
    var str="
    ";
    str ="
    ";
    str ="
    ";
    str ="
    ";
    str =""
    str ="";
    str ="";
    str ="";
    str ="
    ";
    str = "
    "
    str ="
    "; >$("#tabcontent").append(str);
    }


    4. 디자인 요약
    웹사이트 성능이 개선되었습니다. 첫 번째 로드 시 페이지 요소의 과부하나 Dom 트리로 인한 지연이 발생하지 않습니다. 지속적인 업데이트로 인해 페이지 표시 성능이 저하됩니다...
    그림과 같이:


    웹 프런트엔드 디자인 패턴--디스플레이 성능 향상을 위한 돔 재구성_jquery소스코드 다운로드
    /201010/yuanma/DomForm.rar
    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.