Ответ 1
Проекты с большим количеством данных могут способствовать созданию холста. Подходы SVG обычно создают DOM node за точку (если вы не создаете пути), что может привести к:
-
Взрыв размера вашего дерева DOM
-
Проблемы с производительностью
Используя путь, вы можете обойти эту проблему, но тогда вы теряете интерактивность.
Предположим, вы строите диаграмму акций. Если вы говорите о графике с, скажем... максимум 5 лет и заканчиваете только образцы данных торговли, я думаю, что ответ явно SVG. Если вы говорите о том, чтобы смотреть на исторические данные Walmart с первого дня торгов или делать полную торговую информацию в минуту, вам действительно нужно внимательно посмотреть на SVG. Вероятно, придется использовать причудливое управление памятью и подход выборки по требованию, поскольку SVG развалится, особенно если вы отправите один образец в один SVG node.
Если требуется интерактивность, SVG легко имеет ребро, учитывая:
- Это API с сохраненным режимом
- Вы можете использовать типичные обработчики событий
- Вы можете легко добавлять/удалять узлы и т.д.
Конечно, вы видите, что если вам требуется полная интерактивность, это может противоречить механизмам, которые позволяют масштабировать SVG, например, коллапсирование пути, поэтому здесь присутствует внутреннее напряжение.
В крайних случаях будет компромисс. Если размер мал, ответ будет передан SVG. Если размер большой и нет интерактивности, ответом является SVG с использованием только чертежа пути или с использованием Canvas. Если размер большой и требуется интерактивность, вы должны пойти на холст или сложный SVG, что является сложным в любом случае.
В некоторых библиотеках есть как холсты, так и SVG-рендеры, такие как ZingChart и Dojo. Другие склонны придерживаться только одного из двух вариантов.