smalljs$molПоиск⌘ KДокументацияПесочницаСравнениеЭкосистемаО проектеRU
РендерингGetting StartedВведениеМентальная модельБыстрый стартОт TypeScript к view.treeСтруктура проектаИнструментарийEssentialsУстановкаВьюСостояние и реактивностьРоутингРендерингТестированиеДеплойРешение проблемDataЗагрузка данныхСхемы данныхГипер БазаMoreВитринаИз React, Vue и SvelteСборник рецептовAdvancedПлагиныМетаданные модуляОфлайнGhost-вьюAboutЧастые вопросыКомандаРелизыAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Рендеринг

Эта глава о том, что происходит между изменением вашего реактивного состояния и обновлением пикселей на экране. Об этом редко приходится думать — но понимание модели объясняет, почему $mol-код остаётся быстрым без особых усилий.

Никакого виртуального DOM

$mol не диффит виртуальное дерево. Каждое свойство вью привязано напрямую к DOM-узлу или атрибуту, которым оно управляет, через те же реактивные ячейки, с которыми вы уже познакомились в Состоянии. Когда ячейка меняется, заново выполняются только те связывания, что её читают — не поддерево, не функция компонента, а именно затронутые свойства.Это значит, что нет ни прохода сверки, который надо оптимизировать, ни ключей для ручной подгонки диффа списка, ни memo/shouldComponentUpdate, за которыми надо тянуться. Граф зависимостей уже знает минимальный набор обновлений.

Компоненты ленивы

Вью конструируется, только когда его кто-то запросил. Экран, на который вы никогда не переходите, никогда не строится; вкладка, которую вы не открываете, не стоит ничего. Поскольку конструирование происходит по требованию и кешируется, композиция больших деревьев компонентов дёшева — ненужные части просто ещё не существуют.

Рендеринг виртуализирован

$mol рендерит только то, что внутри вьюпорта. Компоненты, прокрученные за пределы видимости, не хранятся как скрытый DOM — они вообще не создаются и строятся в тот момент, когда попадают в зону видимости. Это архитектурное свойство фреймворка, а не опциональная фича или особый компонент-список: виртуализирована любая разметка, поэтому список из десяти элементов и список из десяти тысяч отображаются примерно одинаково по стоимости.Практический эффект в том, что вы пишете обычные деревья компонентов и длинные списки, не прибегая к библиотекам оконного рендеринга.

Воспроизводимые цифры

Заявления о производительности полезны, только если их можно воспроизвести. Вместо того чтобы приводить цифры здесь, $mol участвует в общедоступном js-framework-benchmark; вы можете прочитать его результаты и перезапустить набор тестов сами: результаты js-framework-benchmarkСчитайте это источником истины для сравнений — измеренным, версионированным и независимым от этой страницы.

Дальше

На этом завершается базовая модель того, как работает $mol. Дальше — примените её к загрузке реальных данных в Загрузке данных.
Редактировать эту страницу на GitHubБыло полезно?ДаНетНазадРоутингВперёдТестирование
На этой страницеНикакого виртуального DOMКомпоненты ленивыРендеринг виртуализированВоспроизводимые цифрыДальше
Type to search the documentation.