Я не пробовал ни одной из упомянутых вами библиотек примеров, но, возможно, я смогу объяснить, почему fin-hypergrid
выделяется больше всего. Мое мнение основано в первую очередь на моих знаниях JavaScript и на том, как подобные вещи работают сзади.
Наверное, стоит начать с react-virtualized
и ag-grid
:
- Оба используют способ заполнения DOM и отображения только части данных в представлении, динамического удаления из DOM вещей, которые больше не видны, и предварительного добавления предстоящих вещей. Теперь проблема заключается в добавлении и удалении вещей в DOM, поскольку это, как правило, выполняется очень быстро / несколько раз в секунду. Из-за этого мы наблюдаем некоторую задержку или дрожание. Вы можете проверить Веб-консоль> Профили> Запись профилей ЦП JavaScript и увидеть, что этот метод требует времени для выполнения. Таким образом, единственное, что отличается от
react-virtualized
и ag-grid
, - это их алгоритмы максимально плавного применения этих изменений.
ag-grid
, насколько я могу судить, больше всего страдает от этой проблемы, так как вы могли видеть некоторые элементы, которые еще не завершили рендеринг, и испытывали серьезную задержку при слишком быстрой прокрутке.
react-virtualized
, с другой стороны, отлично справляется со своим алгоритмом, максимально гладко реализуя его. Это может быть лучшая библиотека, доступная в категории манипуляций с DOM, хотя она все еще страдает от проблемы слишком быстрого манипулирования DOM, что приводит к задержке, хотя это наблюдается только тогда, когда задействованы большие фрагменты данных.
Вот причины, по которым fin-hypergrid
выделяется:
- Лучшим преимуществом
fin-hypergrid
является то, что он вообще не выполняет манипуляции с DOM, поэтому вы уже избавлены от проблемы, вызванной слишком быстрым добавлением и удалением вещей, поскольку он использует <canvas>
fin-hypergrid
также отображает только те данные, которые видит пользователь, и динамически удаляет невидимые вещи. Он также добавляет заранее, чтобы добиться ощущения плавной прокрутки, поэтому элементы неподвижного рендеринга не отображаются.
fin-hypergrid
также отлично справляется со своим алгоритмом прокрутки, чтобы добиться максимально плавного воспроизведения, чтобы не было дрожания или задержек.
Это не значит, что hypergrid
все в порядке, у него тоже есть некоторые недостатки:
- Поскольку
fin-hypergrid
создан с использованием HTML5 Canvas, его стилизация станет настоящей проблемой, поскольку он не поддерживает CSS. Вам нужно будет стилизовать его вручную.
- Следует помнить о нескольких вещах: такие элементы управления формы, как
<select>
, переключатели, флажки и т. Д., Могут стать настоящей проблемой для реализации. Если вы пытаетесь реализовать что-то подобное, действуйте осторожно.
- Он в основном используется для отображения данных с простым редактированием столбцов, не задействуя ничего, кроме текстового поля, и достижения наиболее плавного ощущения прокрутки.
В заключение, я бы, вероятно, предложил вместо этого использовать react-virtualized
, поскольку он обеспечивает наиболее плавную прокрутку, чем fin-hypergrid
. Если вы готовы игнорировать недостатки fin-hypergrid
, то fin-hypergrid
- лучший вариант.
ОБНОВЛЕНО:
Поскольку мы обсуждали JS / CSS, реализации этих таблиц на холсте. Я должен был упомянуть последнего возможного претендента, хотя это в первую очередь не библиотека таблиц js, а фреймворк, в котором можно было бы использовать Google Sheets
, он называется d3.js.
d3.js
обладает скоростью и мощью холста и в то же время сохраняет структуру HTML, это означает, что ее можно стилизовать с помощью CSS!
- Он максимально увеличивает использование HTML 5 SVG
- Лучше ничего не могу сказать в
d3.js
Единственным недостатком d3.js
в этом обсуждении является то, что:
- Нет доступных хороших библиотек таблиц, которые используют
d3.js
. Google Sheets
то есть. Но они не делятся кодом.
d3.js
просто очень сложно выучить, хотя есть много вещей, которые помогают нам научиться этому быстрее, но не так быстро.
Если вам нужна скорость Canvas с возможностями стилизации CSS, тогда d3.js
- это ключ, которому нужно научиться.
person
masterpreenz
schedule
01.09.2017