Это больше вопрос о лучших практиках.Пытаясь применить MVC-подобный шаблон проектирования в веб-приложении, я часто задаюсь вопросом, как мне поступить с обновлением View.
Например, если мне нужно обновить View_1, у которого есть X элементов.Лучше ли:
A: перебрать каждый из элементов X, выяснить, какие из них необходимо обновить, и применить изменение DOM с очень высокой степенью детализации.
или
B: использование данных, предоставленных Model или какой-либо другой структурой данных, для регенерации разметки для всего этого View и всех его элементов, а также для замены корневого элемента View_1 за одну манипуляцию DOM?
Исправьте меняесли я ошибаюсь.Я слышал, что механизмы рендеринга обычно более эффективны при замене большого количества DOM за один раз, чем несколько меньших операций DOM.Если это так, то подход B является лучшим.Однако даже при использовании шаблонизаторов мне все еще иногда трудно избежать переписывания пометок для тех частей представления, которые не были изменены.
Я изучил исходный код проекта Bespin до того, как переименовал его.Я отчетливо помню, что они реализовали своего рода механизм цикла рендеринга, в котором DOM-операции ставятся в очередь и применяются через фиксированные промежутки времени, во многом подобно тому, как игры управляют своими кадрами.Это похоже на подход А. Я также вижу причины этого подхода.Небольшие операции DOM, применяемые таким образом, поддерживают отзывчивость пользовательского интерфейса (особенно важно для веб-текстового редактора).Также таким образом, приложение может быть сделано более эффективным, только обновляя элементы, которые должны быть изменены.Статический текст и эстетические элементы могут остаться нетронутыми.
Это мои аргументы в пользу обеих сторон.Что, вы парни, думаете?Ищем ли мы где-нибудь счастливую среду, или один подход в целом превосходит?
Кроме того, есть ли хорошие книги / статьи / сайты по этой конкретной теме?
(давайте предположим, чторассматриваемое веб-приложение сильно загружено многими динамическими обновлениями)