可能這個標題不太合適,如下有個例子,一種是用原生js裡的創建節點、文本節點、插入父節點內的方式,一種是用數據格式化字符串的方式
// 方式1:
var a = document.createElement('a');
a.href = 'http://www.baidu.com';
a.target ='_blank';
var text = document.createTextNode('this is baidu homepage');
a.appendChild(text);
document.body.appendChild(a);
//方式2:
var data = {
content: "this is baidu homepage",
href: "http://www.baidu.com",
target: "_blank"
};
var tpl = '<a href="{#href#}" target="{#target#}">{#content#}</a>';
var tplEngine = function(data, tpl) {
return tpl.replace(/\{#(\w+)#\}/g, function(match, key) {
return typeof data[key] === undefined ? '' : data[key];
});
};
document.body.innerHTML(tplEngine(data,tpl));
1、這兩種方式哪種性能損失更低?
2、innerHTML()方法的後台運行原理是什麼?是否和js的創建元素、文本節點、插入到父節點三個方法過程等價?
innerHTML是屬性,不是方法
多個dom插入操作最好是用DocumentFragment,而不是每次都操作document,操作DocumentFragment,最後插入DocumentFragment到dom樹
不過最新浏覽器優化過,應該性能差不是很大
http://www.zhihu.com/question/27260165