2012-04-27 2 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の要素を追加してブロックを追加し、それをすべて1つの呼び出しで追加します。そうすれば、多くのjsの書籍やパフォーマンスブログで読んだスタイルに従うべきかどうか疑問に思っていますか?私は、以前のコードブロックを使用すると、自分のコードを読んでいる人が素人だと気づいています。また、私は代わりに、DOMを使用しての...あなたが使用するすべてのjQueryのあるすごい、のようなもの少数の人々を満たしていしかし、私はそれがより速く、きれいだと複数のサイトで読ん

+2

[JS Perf](http://jsperf.com/)で両方の方法でテストし、テストします。しかし、片方向が高速であっても、ほんのわずかに速く、マイクロ最適化はせいぜいです。だから、関係なく、私はおそらくあなたに最も快適な感じに従うことをお勧めします。 –

+0

ちなみに、前述の[JS Perf: 'createElementまたはHTMLを文字列として扱う](http:// jsperf。)では、おおよその比較が必要です。 com/createelement-or-treat-html-as-a-string)を使用します。 (恐ろしいタイトル、私は知っているが、それはすべて心に来た) –

+0

あなたのコメントをありがとう。私がしようとしているのは、より迅速かつ明確に開発することです。私は非常に経験豊富なWeb開発者と仕事をしていますが、私の背景はJava/C++のネイティブ開発です。だから私は調整しようとしている、仕事環境は非常に競争力があり、速いペースで、非常に友好的ではない。私はペースを取るのに苦労しているので、2度書くことはまさに私が避けようとしていることであり、私のコードが絶えず批判されていることは、私が慣れていたものではありません。したがって、いくつかの文体知識を素早く取得しようとするので、私のコードが評価されるときに私は知識が豊富になります。 – Astronaut

答えて

1

... document.getElementById()、などのように呼び出します根本的に解析し、HTMLレンダリングがあるので、あなたが意味する場合は... HTML =「」に

を全体のリストを作成するには、someElement.innerHTML = "HTML tags here";は、はい、それは、より速く、ほとんどの場合だを行うので、彼らとは何のブラウザ非常に高速ですが、DOM呼び出しを使って物事を構築する場合は、毎回さまざまなレイヤ(JavaScript、DOM、ブラウザ内部)に渡って多くの旅行があります。

:ほとんどの場合、これは問題ではありません。多くの列を持つ2,000行の表をレンダリングする場合は問題になります。あなたがそれをやっていないのであれば、大部分は問題ではありません。問題が発生した場合には、最適化することができます。

だから私は多くのjsの書籍で見つけたスタイルやパフォーマンスブログで読んだスタイルに従うべきかどうか疑問に思っていますか?

あなたは最もきれいで、最も明瞭で、最も簡単なようにしてください。

前のコードブロックを使用すると、自分のコードを読んでいる人が素人であることがわかります。

これはその問題です。 :-)

また、私が代わりにDOMを使用しての...あなたが使用するすべてのjQueryのあるすごい、のようなもの少数の人々を満たしていること

...などのdocument.getElementById()、などの呼び出し

jQueryをDOM操作のすべてまたはほぼすべてに使用することには何も問題ありません。それは本当に良いですし、あなたに多くの時間とトラブルを保存します。あなたはDOMに親しみやすいである必要がありますので、適切なときに使うことができます(jQueryはすべてを行うわけではありませんが、特にテキストノードを扱うのがうまくいかない)が、jQueryを使用しないでください必要に応じてそのために

、いくつかの読書:再び

...しかし、あなたが使用する必要があるという意味ではありません誰かがjQueryを使用しているからです。ツールを適切に使用してください。重要なのは、使用しているツール(jQueryやDOM自体も含む)を理解することです。そのため、いつ、どこに適用するかを理解できます。

+0

サプライズ!あなたの答えは、今日はまったく正しいわけではありません。 ChromeはDOMメソッドでより速く動作します。 –

+0

@Oleg:興味深いことに、それを裏付けるための参考資料とデータがありますか?もちろん、クロムは市場の15%(http://marketshare.hitslink.com/browser-market-share.aspx?qprid=2&qpcustomd=0)(これまでのところ)であり、ほとんどの場合。" ;-) –

+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文字列バージョンの約半分の速度で動作する傾向があります。 –

関連する問題