Fjord v1.4.2

Fjord

Крошечная библиотека реактивных UI-компонентов. Около 3 КБ в gzip, ноль зависимостей, подключается одной строкой.

~3.1 КБ gzip 0 зависимостей Лицензия MIT ES2015+
Быстрый старт → Справочник API

Зачем ещё одна библиотека

Большинство реактивных фреймворков тянут за собой сборку, бандлер и десятки килобайт рантайма. Fjord решает другую задачу: добавить реактивность и компоненты на обычную HTML-страницу без шага сборки. Подключаете <script> — и работаете.

Установка

Самый быстрый способ — скачать минифицированную сборку и подключить её рядом со страницей. Это один статический файл, никакого шага сборки:

<script src="/fjord.min.js"></script>
<script>
  const { reactive, effect, h, mount } = Fjord;
  const state = reactive({ count: 0 });
  effect(() => console.log("count:", state.count));
  state.count++; // -> count: 1
</script>
Библиотека — это один статический файл без API и телеметрии. Держите его рядом со своими ассетами: он кэшируется как обычная статика и не требует рантайма.

Что внутри

ФункцияНазначение
reactive()Делает объект реактивным: изменения полей триггерят зависимости.
effect()Запускает функцию и переисполняет её при изменении используемых полей.
computed()Производное значение, которое пересчитывается автоматически.
h() / mount()Мини-хелперы для создания и монтирования DOM-узлов.

Пример компонента

const counter = () => {
  const s = Fjord.reactive({ n: 0 });
  const label = Fjord.h("span", { "data-text": "n" }, []);
  const btn = Fjord.h("button", { onclick: () => s.n++ }, ["+1"]);
  Fjord.effect(() => label.textContent = s.n);
  return Fjord.h("div", {}, [label, btn]);
};
Fjord.mount(counter(), "#app");

Дальше — быстрый старт и полный справочник API.