私はアプリケーション内でgetBoundingClientRect()を使用して、ユーザーが項目をドラッグしている間に要素の寸法を取得しています。私はこれを使用してきており、うまくいきました。しかし、この計算がマウスの移動中に実行されている間は、大きなパフォーマンス上の問題が発生し始めています。それはノードが移動しているほど大きなものになることはさらに悪化します。私はChromeでプロファイリングツールを使用しました。ユーザーがドラッグしている間にマウスの移動イベントにラップされているこの関数は、長い時間がかかっています(呼び出しごとに31.4ms ---毎回呼び出されるマウスを動かす時間)問題を研究している間に、私はそれを使用した他の人たちと出会い、パフォーマンスの問題にも気づいた(http://dcousineau.com/blog/2013/09/03/high-performance-js-tip/)。vanilla JSの代わりにelement.getBoundingClientRect()
バニラJavascriptでのgetBoundingClientRect()の代替手段は何ですか(jQueryは絶対にありません)。私のフロントエンドのフレームワークはAngularJS 1.5.8です。コンポーネントを使用してアプリケーションを構築しました(大型のアプリケーションを将来NG2に移行することを目指しています)。ありがとう!
、最初のクリックですべてのマウスの動きでそれを再計算する必要が要素の初期位置を取得していません –
遊びに最小限のコードを投稿できますか? –
カールが答えて言ったように、「より多くの」バニラは得られません。確かに、値の一部しか必要ない場合は、それらを保持する個々のプロパティを要求することができますが、それははるかに高速になることはありません。したがって、パフォーマンスを向上させる唯一の方法は、値のクエリ頻度を減らすことです。デバウンス/スロットルを調べます。 https://css-tricks.com/the-difference-between-throttling-and-debouncing/、https://css-tricks.com/debouncing-throttling-explained-examples/ – CBroe