Библиотека FAST Element предоставляет точный контроль над тем, как свойства компонента синхронизируются с HTML-атрибутами. Эта механика лежит в основе реактивности и корректного обмена данными с внешним миром, особенно при работе в контексте веб-компонентов, где важны соглашения о сериализации, типах и порядке обновления.
Каждое публичное свойство компонента может быть связано с атрибутом. При этом возможны два направления передачи:
FAST использует механизм «attribute behaviors», позволяя задавать тип, режим отражения и правила преобразования.
Режим, при котором значение определяется только свойством экземпляра и не имеет отображения в атрибуте. Это полезно для внутренних данных, вычисляемых значений или сложных структур.
Особенности:
Значение свойства автоматически синхронизируется с атрибутом. Такое отображение упрощает интеграцию с DOM-средой и CSS-селекторными механизмами, а также повышает читабельность при инспекции компонентов.
Ключевые моменты:
Режим, предназначенный для инициализации свойства на основе значения атрибута. FAST парсит строковое значение, применяя правила конвертации типов (boolean, number, string, enum и др.).
Отличительные черты:
Наиболее полный режим, обеспечивающий двустороннюю синхронизацию. Значение свойства отражается в атрибут, а обновление атрибута приводит к изменению свойства.
Сильные стороны:
Ограничения:
FAST предоставляет автоматические преобразователи для часто используемых типов:
Number.Пользователь может определить собственный конвертер, реализующий
методы fromView и toView.
Сериализация требуется при отражении значения свойства в атрибут. Основные правила:
Десериализация выполняется в обратном направлении, при чтении значения атрибута. Важный фактор — устойчивость к некорректным значениям, особенно когда обновления приходят от внешнего окружения.
Режимы атрибутов напрямую влияют на реактивную модель:
Выбор оптимального режима зависит от назначения свойства:
Режимы атрибутов работают совместно с шаблонной системой FAST. Значения, полученные из атрибутов, участвуют в биндингах и вычислениях. Событийная система реагирует на изменения свойств, что обеспечивает корректное обновление DOM. Отражённые атрибуты позволяют CSS выбирать состояния компонента без вмешательства в JS-код.
FAST избегает ненужных обновлений атрибутов и свойств путём сравнения предыдущих и новых значений. Это снижает нагрузку на DOM и предотвращает повторные циклы. При использовании пользовательских типов ключевым моментом становится корректность функций преобразования, так как они определяют контракт между DOM-миром и внутренней логикой компонента.