FAST Element — это библиотека для создания высокопроизводительных веб-компонентов на базе стандарта Web Components. Один из удобных способов интеграции FAST Element в проект — использование CDN, что позволяет обойтись без установки через npm и настроек сборки.
Для работы с FAST Element через CDN достаточно добавить
<script> в HTML-файл. Важно подключать
модульные скрипты, чтобы иметь возможность использовать
синтаксис ES Modules:
<script type="module">
import { FASTElement, html, css } from "https://cdn.jsdelivr.net/npm/@microsoft/fast-element/dist/fast-element.min.js";
class MyComponent extends FASTElement {
static template = html`<p>Привет, FAST Element!</p>`;
static styles = css`
p {
color: #0078d4;
font-weight: bold;
}
`;
}
FASTElement.define("my-component", MyComponent);
</script>
Ключевые моменты:
type="module" обязателен для корректной работы импорта
из CDN..min.js)
уменьшает время загрузки.FASTElement,
html, css) для минимизации веса скрипта.FAST Element использует html и css для
декларативного описания структуры и внешнего вида компонентов. При
CDN-деплое это работает так же, как при локальной сборке:
static template = html`
<div class="container">
<span>${x => x.message}</span>
</div>
`;
static styles = css`
.container {
padding: 10px;
background-color: #f4f4f4;
}
span {
font-size: 1.2em;
color: #333;
}
`;
Особенности при работе через CDN:
${x => x.message}.Использование CDN позволяет быстро обновлять версии FAST Element, заменяя URL:
<script type="module">
import { FASTElement } from "https://cdn.jsdelivr.net/npm/@microsoft/fast-element@latest/dist/fast-element.min.js";
</script>
Рекомендовано фиксировать конкретные версии (@1.9.1),
чтобы избежать непредсказуемого поведения при автоматическом
обновлении.
При работе через CDN можно создавать сложные компоненты с вложенными FAST Elements:
import { FASTElement, html, css } from "https://cdn.jsdelivr.net/npm/@microsoft/fast-element/dist/fast-element.min.js";
class ChildComponent extends FASTElement {
static template = html`<p>Дочерний компонент</p>`;
}
class ParentComponent extends FASTElement {
static template = html`
<div class="parent">
<child-component></child-component>
<p>Родительский текст</p>
</div>
`;
static styles = css`
.parent {
border: 2px solid #0078d4;
padding: 15px;
}
`;
}
FASTElement.define("child-component", ChildComponent);
FASTElement.define("parent-component", ParentComponent);
Особенности:
Для ускорения работы проекта рекомендуется:
const module = await import("https://cdn.jsdelivr.net/npm/@microsoft/fast-element/dist/fast-element.min.js");
.min.js
версии для снижения размера пакета.FASTElement, html,
css, избегая лишнего кода.FAST Element через CDN хорошо сочетается с любыми фреймворками и Vanilla JS. Поскольку это стандартные Web Components, их можно использовать в React, Vue или Angular без конфликта с системой сборки:
<parent-component></parent-component>
dangerouslySetInnerHTML или ref для прямого
доступа к компоненту.<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>FAST Element CDN Example</title>
</head>
<body>
<parent-component></parent-component>
<script type="module">
import { FASTElement, html, css } from "https://cdn.jsdelivr.net/npm/@microsoft/fast-element/dist/fast-element.min.js";
class ChildComponent extends FASTElement {
static template = html`<p>Дочерний компонент</p>`;
}
class ParentComponent extends FASTElement {
static template = html`
<div class="parent">
<child-component></child-component>
<p>Родительский текст</p>
</div>
`;
static styles = css`
.parent {
border: 2px solid #0078d4;
padding: 15px;
}
`;
}
FASTElement.define("child-component", ChildComponent);
FASTElement.define("parent-component", ParentComponent);
</script>
</body>
</html>
Эта структура позволяет полностью обойтись без сборщика и npm, сохраняя все преимущества FAST Element: быстрые реактивные компоненты, изоляцию стилей, декларативное описание шаблонов и легкость обновления через CDN.