Web 前端設計模式 Dom重構

2022-01-10 09:54:50 字數 2427 閱讀 8344

1. 設計場景

某個週末的早上躲在家裡睡大覺,突然我們老大(億網公司的技術總監)乙個**撥過來,他說:智華,你趕緊從床上跳起來,不要刷牙,不要洗臉,滾到電腦面前,開啟電腦,我們的印刷網(出問題了...

此時不能責怪公司的伺服器爛,網速卡之類的,那樣很可能會導致老大對我一頓胖揍甚至扣獎金...

所以只能從**效能方面進行改良...

2.設計目標

減少頁面載入時不必要的元素,構建乙個輕量級的web頁面...

3.解決方案

當初我接到這個case的時候,最初的設計方案毫無疑問是隱藏幀做法,這是最好用也是最容易簡單的,它的方法就是將四個標籤tab(畫冊,手提袋,掛曆,包裝)所對應的四個div全部載入頁面,並在載入時顯示第乙個tab(畫冊)的div,在滑鼠輪滑過tab的時候顯示相應tab標籤的div,隱藏其他tab標籤的div...

因此才會出現上述的情況,我想起我前一天晚上看的一本web設計模式的書,上面的一段話引曾起我的注意:使用頁面元素更新來重構dom樹往往比隱藏幀的效能要高得多...所以此時我的想法便是重構dom樹...

web頁面的原始碼很簡單,重要的在於

id="tabcontent" 的那個div,它是關鍵,它裡面元素的變換取決於上面的四個標籤,當滑鼠經過時就將不同的內容更新到div裡面,這使得頁面不用一開始就將所有的元素都載入,並進行不厭其煩的隱藏和顯示,實現**如下。。。

這樣,就有四個id分別tabcontent1,tabcontent2,tabcontent3,tabcontent4為div不斷的輪換 替換進id="tabcontent"的 div裡面 ,嘗試一下,確實效能高了很多...

**

<

div

class="

menu

">

<

ul>

<

li><

a href="

#"id=

"tablink1

"onclick="

return false

">

包裝盒

a>

li>

<

li><

a href="

#"id=

"tablink2

"onclick="

return false

">

畫冊 a

>

li>

<

li><

a href="

#"id=

"tablink3

"onclick="

return false

">

手提袋

a>

li>

<

li><

a href="

#"id=

"tablink4

"onclick="

return false

">

三摺頁

a>

li>

ul>

div>

<

div

class="

border2 w1"id

="tabcontent

">

div>

/隱藏標籤

function tabs(i)

}//更新資料

到這裡應該算結束,可是我突然想起乙個問題,這種做法其實和jquery中的hover思想是一樣的,而這邊是進行輪詢的dom元素更新,也就是說每一次滑鼠移動標籤都要有一些資料要傳送和接收,相對與上面小段資料是沒什麼影響,但是大的case中使用這種方法就不可行,因為它的dom元素更新可能是十幾kb甚至幾十kb的資料流,這無疑給web頁面的效能帶來極大的挑戰...

//隱藏標籤

function tabs(i)

$("#tabcontent"+i).show();

var num,ids,ordnum;

var len= $("#tabcontent"+i).length;//這句話很重要,它是杜絕將元素重複載入的判斷(如果該元素存在,就不需再次追加)

if(len==0)

}}//載入資料

4.設計小結**的效能提高了,既不會出現在首次載入的時候頁面元素負荷過重而造成的延遲,也不會因為dom樹的不斷更新而造成頁面顯示效能低下...

如圖:

web前端 DOM操作

dom document object model 文件物件模型 乙個web頁面的展示,是由html標籤組合成的乙個頁面,dom物件實際就是將html標籤轉換成了乙個文件物件。可以通過dom物件中js提供的方法,找到html的各個標籤。通過找到標籤就可以操作標籤使頁面動起來,讓頁面動起來。dom操作...

Web前端之DOM介紹

什麼是dom dom,document object model文件物件模型。html dom 定義了訪問和操作 html 文件的標準方法。dom 將 html 文件表達為樹結構,html檔案中每個標籤都是乙個節點node 物件是一種獨立的資料集合,有對應的屬性和方法。而js中物件分類三種 使用者定...

Web前端設計模式 jQuery驗證外掛程式

設計場景 這確實是乙個很糟糕的事情,即使你可以從之前的 見那些 拷貝進來,但是修改工作仍然會令你發狂.所以,我花了點時間將驗證做成乙個jquery外掛程式.設計目標 建立乙個基於jquery框架的通用web驗證外掛程式.設計要求 1.需要漂亮的css樣式及小圖示的潤飾.2.基於jquery框架.3....