詳細的分析更多的閱讀。
我公司將提供3種方式創建大型DOM和他們的優點和缺點,以及課程的大型DOM創建,爲什麼最優化的方式。 底線是在js中創建DOM時,原生JS和DOM方法是你的朋友,除非沒有其他方式(不太可能),否則不要使用jquery。
用於比較的測試數據:創建400行,5列並附加到DOM。 testData是您以json形式從後端獲取以創建表的對象的列表。
附加執行時間的測試結果快照不同瀏覽器的 HTML
<div id="employeeListContainer1"></div>
<table id="employeeList2">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Title</th>
<th>ID</th>
<th>Department</th>
</tr>
</thead>
1路:字符串連接(最優化的方式在不同瀏覽器的性能方面)
var tableElementContainer1 = document.getElementById("employeeListContainer1"),
temptableHolder = '<table><thead><tr><th>First Name</th><th>Last Name</th><th>Title</th><th>ID</th><th>Department</th></tr></thead><tbody>';
for(var i=0,len=testData.length; i<len; i++){
temptableHolder += '<tr><td>' + testData[i].firstName + '</td><td>' + testData[i].lastName + '</td><td>' + testData[i].title
+ '</td><td>' + testData[i].id + '</td><td>' + testData[i].department + '</td></tr>';
}
temptableHolder += '</tbody></table>';
tableElementContainer1.innerHTML = temptableHolder ;
優點: - 跨火狐/鉻/ IE/Safari瀏覽器最快執行時間(3到5毫秒跨瀏覽器)。通過performance.now()和console.time()API測量。
缺點: - 當列數更多,並且需要設置很多屬性時,使用字符串可能會變得困難並且不太主要。
第二個辦法:本地的js使用document.createElement()(這是在不同的瀏覽器性能方面第二好的辦法)
var tableBody = document.createElement('tbody'),
tableElement2 = document.getElementById("employeeList2"),
for(var i=0,len=testData.length; i<len; i++){
tableRow = document.createElement("tr");
for(var k in testData[i]){
rowCell = document.createElement("td");
rowCell.appendChild(document.createTextNode(testData[i][k]));
tableRow.appendChild(rowCell);
}
tableBody.appendChild(tableRow);
}
tableElement2.appendChild(tableBody);
優點: - 跨火狐/ Chrome的第二最快的執行時間/ Safari (跨瀏覽器5到12毫秒)。通過performance.now()和console.time()API測量。 - 比第一次進場主要站得住腳
缺點: - 執行時間是多在IE瀏覽器,90+ millsec
第三屆方式:使用jQuery創建DOM(我的建議是不要「噸使用它)
var tableBody = $('<tbody></tbody>'),
tableElement2 = document.getElementById("employeeList2"),
for(var i=0,len=testData.length; i<len; i++){
tableRow = $("<tr></tr>");
for(var k in testData[i]){
rowCell = $("<td></td>");
rowCell.append(testData[i][k]);
tableRow.append(rowCell);
}
tableBody.append(tableRow);
}
tableElement2.append(tableBody);
優點: - 輕鬆的元素添加屬性/班/款式和易於閱讀和主要站不住腳。
缺點: - 在所有瀏覽器最差執行時間(220毫秒到330毫秒),最慢的數字是IE
這聽起來像一個JS模板引擎的作業,如http:// handlebarsjs .com/- 不幸的是,我不太瞭解它爲您提供真正的解決方案,但我認爲它可能有幫助。 – Nix 2012-03-08 09:01:20
@Nix謝謝,一直在尋找一種方式來創建複雜的DOM元素,這種方式非常健全,易於維護。 handlebars.js正是我所需要的。 :) – DavidScherer 2014-04-11 19:45:18