Сообщение от nerv_
|
почти тоже самое, что у тебя, только mvvm
|
Да, уже ознакомился, благодаря тебе. Крутая штука.
Сообщение от nerv_
|
К, слову, у тебя синхронный рендер? Если да, я уже писал, чем он плох.
|
Да, синхронный. Имея асинхронный рендерер (мы о коллекциях говорим, да?), прийдется ререндерить всю коллекцию либо запускать проверку того, что изменилось.
Скажем, ты на каком-то этапе добавляешь новый элемент в коллекцию (например, пользователь создает еще один айтем в списке дел). Асинхронный рендерер не знает, что было добавлено или удалено. Ему прийдется рендерить всю коллекцию заново, "перевставляя" старые айтемы в контейнер и рисуя новые, либо запускать проверку данных, исходя из которой колекция отрендерится. Оба варианта чреваты экспоненциально возрастающей сложностью безразборных вставок или сложных проверок.
Матрешка, при вставке нового айтема в коллекцию, рендерит одну ноду и вставляет её, не осуществляя никаких проверок (разве что, на наличие уже отрендеренной ноды). Эта логика очень проста и выигрывает по скорости (именно из-за отсутствия dirty-checking и virtual-dom) у Реакта и подобных.
Такой юз-кейс покрывает (по моей оценке) 99% задач по рендерингу. Оставшийся процент касается приложений с произвольным, частым ререндерингом, пересортировкой всей коллекции и когда данные коллекции всё время заменяются на новые с очень коротким интервалом.
Для таких задач, в списке дел по развитию фреймворка, есть опция, включающая асинхронность:
https://trello.com/c/HN0pkjyS/61-deb...ng-and-binding
Так что, асинхронному рендерингу быть, но задача имеет очень низкий приоритет из-за того, что она покрывает очень малую долю задач.