Dynatree хранит узлы во внутренней структуре.«Рендеринг» - это процесс создания или обновления элементов HTML в DOM для отображения статуса дерева.Например, последний узел в ветви имеет специальное имя класса, поэтому добавление узла требует удаления этого класса из предыдущего «последнего узла» и добавления его к новому.
Каждый раз, когда вы вызываете .addChild (данные), рендеринг срабатывает.Если вы передаете 100 узлов одним вызовом, рендеринг выполняется только один раз, поэтому это всегда более производительно, чем вызов 100 раз одним узлом.
В настоящее время (выпуск 0.5.4) addChild использует этот шаблон:
var prevFlag = tree.enableUpdate(false);
[modify the tree]
tree.enableUpdate(prevFlag);
enableUpdate (true) вызывает tree.redraw (), поэтому все дерево обновляется.Это изменится с выпуском 1.0, но даже тогда будет быстрее объединять вызовы addChild.
Другой аспект: , когда являются узлами , созданными в DOM.Начиная с версии 1.0 создание HTML-элементов откладывается до тех пор, пока узел не станет видимым (развернутым) в первый раз.Таким образом, можно загружать очень большое количество узлов в эффективную внутреннюю структуру данных Dynatree без взлома DOM.
Если удобнее предварительно загружать целое дерево или лениво загружать отдельные ветвипо требованию зависит от сервера, сети и клиента.Так что это всегда вопрос сравнения различных сценариев.