2010-07-06 119 views
1

我正在嘗試構建一個POC以將繁重的JSF應用程序遷移到無狀態的ajax/restful應用程序。 在這個過程中,我不能決定什麼是呈現返回到屏幕的JSON數據的最佳方式,我可以看到兩種主要的方法,一種是使用模板並使用類似原型的toHTML(),另一種是在JavaScript中構建對象,然後使用appendchild。 第一個對於需要維護代碼的新人來說更容易理解,因爲模板非常清晰並且更容易維護(同樣,更改模板中html所需的技能也更低),但是從我瞭解的內容appendchild方法在瀏覽器速度方面更好。從json構建HTML的最佳方法

什麼是最好的方式來處理這個問題,我錯過了兩者之間的其他比較點? append child這是兩者之間的一個很好的折衷? 有沒有其他方法可以做到這一點?
P.S:要明確我與innerHTML is the fastest方式跨瀏覽器的談論客戶端的操作僅

回答

1

設置HTML直接。它有some bugs,但是,你應該記住(表格,表格等)。

var html = []; 

for (...) { 
    html.push(PARTIAL_HTML); 
} 

element.innerHTML = html.join(""); 

UPDATE:最好的辦法可能是測試它自己:

function test(name, fn, n, next) { 

    var n = n || 100; // default number of runs 
    var start, end, elapsed; 

    setTimeout(function() { 
    start = Number(new Date()); 
    for (; n--;) { 
     fn() 
    } 
    end = Number(new Date()); 

    elapsed = end - start; 

    // LOG THE RESULT 
    // can be: $("#debug").html(name + ": " + elapsed + " ms"); 
    console.log(name + ": " + elapsed + " ms")); 

    next && next(); 
    }, 0); 
} 

test("dom", function() { 
    // ... 
}); 

test("innerHTML", function() { 
    // ... 
}); 
+0

喜的innerHTML benchh爲2歲,我不知道這是否仍是案件 .. ? – Amnon 2010-07-07 05:17:04

+0

我知道這是事實,但如果您不確定自己可以隨時進行測試,請參閱我的更新。 – galambalazs 2010-07-07 07:20:54

+0

謝謝,我會檢查。 我用innerhtml方法的另一個問題是,我不能使用像dojo網格等一些自定義小部件...我無法在網上找到一個好的文章描述不同的批准處理json,你知道嗎? 謝謝 – Amnon 2010-07-07 13:24:30