2012-04-27 18 views
0

我繼續讀包含的東西像JS的書:的Javascript文體 - 專業的代碼

function onSuccess(entries) { 
    document.getElementById("loading").innerHTML=""; 
    var ul = document.getElementById("file-listing"); 
    for(var index=0;index<entries.length;index++) { 
     var li = document.createElement('li'); 
     li.innerHTML = entries[index].name; 
     ul.appendChild(li); 
    } 
} 

不過,我在多個網站上讀到它的速度更快和更清潔的HTML創建整個列表=「」,添加ul和li元素,然後添加塊,並將其全部添加到一個調用中...所以我想知道是否應遵循我在許多js書籍中找到的樣式或我在性能博客上閱讀的樣式?如果我使用以前的代碼塊,我最擔心的是閱讀代碼的人會發現它是業餘的。我也有遇到一些人是像,哇你用的是jQuery的...而不是使用DOM調用一樣document.getElementById(),等...

+2

兩種寫法,然後用[JS Perf](http://jsperf.com/)進行測試。但是,即使某種方式更快,它的速度也可能稍微快一點,並且最好是微型優化。所以,無論如何,我可能會建議遵循什麼讓你感覺最舒服。 – 2012-04-27 10:01:53

+0

順便提一下,在前面提到的[JS Perf:'createElement或將HTML視爲一個字符串'](http:// jsperf。)中進行近似比較(根據您的需要量身定做,如果它與您的用例關係不夠緊密) COM /的createElement - 或 - 治療 - HTML作爲一種字符串)。 (可怕的標題,我知道,但這是所有想到的。) – 2012-04-27 10:10:49

+0

感謝您的意見。我想要做的是更快更清晰地發展。我正在與非常有經驗的Web開發人員合作,但我的背景大部分是Java/C++本地開發。所以我正在努力調整,工作環境非常有競爭力,而且節奏很快,對問題也不是很友善。我正在努力獲得速度,所以寫兩遍正是我想要避免的,並且讓我的代碼不斷受到批評並不是我習慣的。所以,並試圖快速獲得一些文體知識,所以當我的代碼被評估時,我可以更有知識。 – Astronaut 2012-04-27 11:12:44

回答

1

不過,我在多個網站上,它的速度更快和更清潔的閱讀在HTML =「」創建整個列表...

如果你的意思,然後someElement.innerHTML = "HTML tags here";是的,它在大多數情況下更快,因爲從根本上解析和渲染HTML是什麼瀏覽器做等他們」對它的速度非常快,而如果你使用DOM調用構建東西,那麼每次都會有很多遍歷各個層次的內容(JavaScript,DOM,瀏覽器內部)。

但是:在大多數情況下,這也沒有關係。如果你渲染一個有許多列的2000行表格,這可能很重要;但是如果你不這樣做,那大多無關緊要。您可以優化,看看是否出現問題。

所以我想知道我是否應該遵循我在許多js書籍中找到的風格,或者我在表現博客上閱讀的風格?

你應該做任何看起來最乾淨,最清晰,最簡單的事情。

我最擔心的是,如果我使用以前的代碼塊,閱讀我的代碼的人會發現它是業餘的。

這就是他們的問題。 :-)

我也有遇到一些人是像,哇你用的是jQuery的...而不是使用DOM調用類似的document.getElementById(),等...

在所有或幾乎所有的DOM操作中使用jQuery沒有任何問題;它真的很擅長,併爲您節省了大量的時間和麻煩。你應該熟悉與DOM的熟悉,所以你可以在適當的時候使用它(jQuery不會做所有事情;特別是它不擅長處理文本節點),但這並不意味着你不應該在使用jQuery時並在適當的地方。

爲了達到這個目的,一些閱讀:

...但同樣,這並不意味着你應該使用只是因爲有人看不起使用jQuery。適當使用工具。重要的是要了解你正在使用的工具(包括jQuery,還有DOM本身),所以你可以理解何時何地應用它們。

+0

驚喜!你現在的答案並不完全正確。 Chrome更快地使用DOM方法。 – 2012-04-27 10:30:49

+0

@ Oleg:這很有趣,你有參考資料和數據支持嗎?當然,Chrome目前只有[15%的市場份額](http://marketshare.hitslink.com/browser-market-share.aspx?qprid=2&qpcustomd=0)(迄今爲止),而且我確實說過在大多數情況下。」 ;-) – 2012-04-27 10:46:17

+0

@Oleg:在他對這個問題的評論中提到的[David Thomas創建的測試用例](http://jsperf.com/createelement-or-treat-html-as-a-string/1)似乎是反過來說,[我的更新](http://jsperf.com/createelement-or-treat-html-as-a-string/2)。 'createElement' /'appendChild'版本的運行速度大約是HTML字符串版本的一半。 – 2012-04-27 10:53:21