FAST Element предоставляет расширяемую систему управления жизненным циклом веб-компонентов, построенных на стандартах Web Components и Custom Elements. Жизненный цикл компонента включает моменты создания, подключения к DOM, обновления состояния и удаления из DOM. Контроль этих этапов позволяет эффективно управлять состоянием и производительностью компонентов.
Создание компонента начинается с вызова конструктора класса,
наследуемого от FASTElement. На этом этапе:
Пример конструктора:
import { FASTElement } from "@microsoft/fast-element";
class MyComponent extends FASTElement {
constructor() {
super();
this.title = "Заголовок по умолчанию";
this.items = [];
}
}
Вызывается при подключении компонента к DOM. В FAST Element его использование оптимизировано через методы реактивности и шаблонов. На этом этапе можно:
connectedCallback() {
super.connectedCallback();
console.log("Компонент добавлен в DOM");
}
Вызывается при удалении компонента из DOM. Основные задачи:
disconnectedCallback() {
super.disconnectedCallback();
console.log("Компонент удален из DOM");
}
FAST Element автоматически отслеживает изменения наблюдаемых атрибутов, связывая их с реактивными свойствами. Это позволяет компонента реагировать на внешние изменения данных.
attributeChangedCallback(name, oldValue, newValue) {
super.attributeChangedCallback(name, oldValue, newValue);
console.log(`Атрибут ${name} изменился с ${oldValue} на ${newValue}`);
}
Система реактивных свойств FAST Element связывает изменения состояния с обновлением DOM. Свойства можно объявлять с помощью декораторов или конфигурации класса:
import { observable } from "@microsoft/fast-element";
class MyComponent extends FASTElement {
@observable title;
}
При изменении title автоматически перерисовываются
связанные с ним шаблоны. Это уменьшает необходимость вручную управлять
обновлением DOM и снижает вероятность ошибок.
FAST Element использует шаблоны и привязки, которые обновляются при изменении наблюдаемых свойств. Основные механизмы:
if), повторяющиеся
шаблоны (repeat) и вложенные шаблоны позволяют строить
динамические интерфейсы без ручной перерисовки.Пример привязки свойства к шаблону:
import { html, FASTElement, css } from "@microsoft/fast-element";
const template = html<MyComponent>`
<h1>${x => x.title}</h1>
`;
class MyComponent extends FASTElement {
@observable title = "Привет, FAST!";
}
MyComponent.define({
name: "my-component",
template
});
FAST Element предоставляет дополнительные хуки для точного контроля над компонентом:
render() — вызывается при
необходимости обновления шаблона.adoptedCallback() — срабатывает, когда
элемент перемещается между документами (редко используется, но важен для
iframe или shadow DOM).propertyChanged() — позволяет
реагировать на конкретные изменения свойств без перехвата всех
атрибутов.Контроль жизненного цикла помогает избежать лишних рендеров и утечек памяти:
disconnectedCallback.Жизненный цикл FAST Element строится вокруг стандартов Web
Components, но расширяется системой реактивных свойств и шаблонов.
Правильное использование методов connectedCallback,
disconnectedCallback, реактивных свойств и шаблонов
позволяет создавать высокопроизводительные и управляемые компоненты с
минимальной ручной работой по обновлению DOM.
Ключевые аспекты жизненного цикла:
connectedCallback: подключение к DOM и инициализация
ресурсов.disconnectedCallback: очистка и освобождение
ресурсов.