16

多くの人と同じように、私は jQuery を学ぶことで JavaScript を学びました。

最近、次のようなビットを交換しています。

$(this).attr('title')this.title

$(this).attr('id')this.id

$(this).val()this.value

$(this).parent()this.parentNode

$(this).attr('class')this.className

コードがきれいになっただけでなく、技術的にも高速になりました。

  1. この種の削減は受け入れられ、奨励されますか?

  2. jQuery ではなく生のプレーンな JavaScriptで行うべき他の一般的な方法はありますか?

  3. このタイプの還元主義には、クロス ブラウザーの問題の可能性はありますか?

4

3 に答える 3

6

ネイティブの Javascript 関数を使用すると、一般的に jQuery の対応する関数よりも高速ですが、その使用から生じる可能性のあるブラウザーの互換性の問題にさらされます。 this.valueそのようなことが問題を引き起こす可能性はほとんどありませんが、他の同様の属性/機能がすべてのブラウザーで機能するとは限りません。jQuery のようなフレームワークを使用すると、そのようなことに対処したり、心配したりする必要がなくなります。

パフォーマンスが問題になる場合、つまり、多くのタイトなループと繰り返し操作がある場合にのみ、プレーンな Javascript を使用します。

于 2012-08-03T15:57:10.813 に答える
4

可能な限り DOM プロパティを使用することをお勧めします。それらのほとんどすべてで問題は発生せず、パフォーマンスが向上し、jQuery への依存度が低くなります。たとえば、 のようなプロパティの場合checked、jQuery についてはすべて忘れたほうがよいでしょう。jQuery は、単純なタスクに混乱を加えるだけです。

特定のプロパティについて疑問がある場合は、jQuery ソースを調べて、そのプロパティに特別な処理があるかどうかを確認し、学習演習として参照してください。

于 2012-08-03T16:24:20.087 に答える
2

多くの人がそのような主張を拒否しますが、jQueryの使用を回避/最小化すると、スクリプトが大幅に高速化されることもわかりました。$()特に繰り返し/不必要なことは避けてください。代わりに一度やってみてください例えばa = $(a);

特にコストがかかることに気づいたことがあり$(e).css({a:b})ます。

グーグルの最適化クロージャコンパイラは、おそらくそのような単純な関数もインライン化することができます!

実際、まったく新しい概念を導入することなく、ブラウザー間の互換性に関するほとんどの機能を提供する、かなり大きなライブラリー(クロージャーライブラリー)が付属しています。

完全最適化モードで変数と関数をエクスポートするクロージャーの方法に慣れるには少し時間がかかります(名前が変更されないように!)。しかし、少なくとも私の場合、生成されたコードは非常に良くて小さいものであり、それ以来、さらにいくつかの改善が行われているに違いありません。

https://developers.google.com/closure/compiler/

于 2012-08-03T16:45:52.767 に答える