Библиотека FAST Element использует реактивную модель данных и высокопроизводительный механизм шаблонов, позволяющий минимизировать число дорогостоящих операций с DOM. Ключ к эффективности заключается в точечном обновлении элементов и вычислении различий между текущей и требуемой структурой без полного пересоздания узлов.
FAST Element опирается на понятие наблюдаемых свойств. Каждое
свойство компонента, помеченное как @observable,
отслеживается системой изменения состояния. При изменении такого
свойства запускается процесс обновления, состоящий из двух фаз:
Обновление не инициируется немедленно, вместо этого оно ставится в очередь выполнения. Такой подход позволяет группировать изменения, исключая избыточный рендеринг.
FAST обновляет только те участки шаблона, значения которых изменились. В основе лежит концепция bindings — привязок между свойствами и узлами DOM. Каждая привязка хранит предыдущее значение, что позволяет быстро определить необходимость обновления.
Ключевые особенности:
Коллекции представляют собой один из самых затратных сценариев обновления. FAST применяет дифф-алгоритм, позволяющий вычислить минимальный набор изменений в списке:
При использовании директивы repeat возможно указать
функцию ключей, повышающую точность сравнения и позволяющую избежать
перемонтирования элементов.
Чтобы избежать каскадных перерендеров, FAST размещает обновления в очереди микрозадач. Это означает, что множество операций изменения состояния компонента в рамках одного цикла event-loop будет сгруппировано и выполнено единым обновлением. Такое поведение снижает нагрузку на DOM и предотвращает дребезг интерфейса.
1. Кэширование вычислений. Вычисляемые свойства могут быть закэшированы до тех пор, пока исходные данные не изменятся. Это существенно уменьшает количество вызовов привязок при сложных пересчётах.
2. Минимизация сторонних эффектов. Обработчики событий и побочные вычисления желательно отделять от реактивной системы. FAST Element позволяет организовать архитектуру так, чтобы визуальные изменения происходили только при обновлении наблюдаемых данных.
3. Контроль за частотой обновлений. При необходимости можно вручную управлять пульсацией обновлений или временно блокировать реактивность во время массовых изменений состояния.
FAST Element органично использует нативные возможности браузера, включая:
Благодаря этому обеспечивается оптимизация без дополнительной нагрузки и без внедрения промежуточных абстракций.
Некоторые сценарии требуют полной ручной конфигурации:
FAST предоставляет механизмы директив и пользовательских binding-поведения для тонкого контроля над обработкой состояния и вывода.
Локализация состояния. Состояние должно находиться максимально близко к тому компоненту, который его использует. Это уменьшает количество обновлений верхнего уровня.
Разбиение на компоненты. Чем меньше ответственность компонента, тем меньше обновлений ему приходится выполнять и тем легче кешировать его состояние.
Явное управление коллекциями. Использование ключей в списках и функций сравнения обеспечивает стабильные обновления при сортировке и фильтрации.
Оптимизация обновлений — центральный механизм FAST Element, обеспечивающий высокую скорость интерфейсов даже при значительных объёмах данных. При правильном использовании привязок, коллекций и кэширования достигается минимальный объём операций с DOM, что делает интерфейсы отзывчивыми и экономными по ресурсам.
Такая модель делает FAST Element эффективной платформой для построения интерфейсов, чувствительных к частым изменениям данных и интенсивной работе с шаблонами.