Я использовал getBoundingClientRect() в своем приложении, чтобы получить размеры элемента, когда пользователь перетаскивает элемент вокруг. Я использую это, и он работает хорошо; однако я начинаю получать серьезные проблемы с производительностью, пока этот расчет выполняется во время перемещения мыши. Это становится еще хуже, чем больше узел, который перемещается. Я использовал инструменты профилирования в Chrome и заметил, что эта функция, будучи обернутой в событие перемещения мыши, которое запускается во время перетаскивания пользователем, занимает много времени (31,4 мс на один звонок - масштаб, который называется каждым во время перемещения мыши.) Изучая проблему, я наткнулся на других, кто ее использовал, и заметил проблемы с производительностью (http://dcousineau.com/blog/2013/09/03/high-performance-js-tip/).Vanilla JS Альтернативы element.getBoundingClientRect()
Каковы мои альтернативы getBoundingClientRect() в ваниле Javascript (абсолютно нет jQuery)? Моя внешняя структура - AngularJS 1.5.8, и я разработал приложение, используя компоненты (смотря на то, чтобы в будущем перенести наше большое приложение на NG2). Благодаря!
получить начальное положение элемента на начальном щелчке, нет необходимости пересчитывать его на каждом движении мышей –
Не могли бы вы разместить минимальный код для игры? –
Как сказал Карл в своем ответе, он не получает «больше» ванили. Конечно, если вам нужны только некоторые из значений, вы можете запросить отдельные свойства, которые их удерживают, но это вряд ли будет намного быстрее. Таким образом, ваш единственный способ повысить производительность может заключаться в том, чтобы запрашивать значения реже. Посмотрите на debouncing/throttling. https://css-tricks.com/the-difference-between-throttling-and-debouncing/, https://css-tricks.com/debouncing-throttling-explained-examples/ – CBroe