Skip to content

Компилятор (опциональный)

Continuum работает без единого билд-плагина: JSX проходит стандартный esbuild-трансформ, DOM строит рантайм-фактори. Это остаётся дефолтом — любой vite/esbuild, ноль настройки.

@continuum-js/vite-pluginопциональный ускоритель для create-тяжёлых экранов (длинные списки, большие таблицы). Он компилирует ровно тот JSX, который вы уже пишете, в клонируемые шаблоны: вся статика склеивается в одну HTML-строку, распарсенную один раз на call-site, и создание поддерева превращается в один cloneNode(true) плюс привязки динамических «дырок» — техника, стоящая за цифрами Solid.

«Опциональный» — значит «можно убрать», а не «редко нужен»

Плагин включён по умолчанию: npm create continuum-js кладёт его в vite.config.ts, поэтому каждый новый проект едет с ним. «Опциональный» — про корректность, а не про то, что им редко пользуются: удалите строку плагина, и тот же код без изменений поедет через рантайм-фактори; вы лишь потеряете немного скорости создания на тяжёлых экранах. Это включённый по умолчанию ускоритель, а не зависимость, которой надо управлять.

Проекты из npm create continuum-js@latest получают плагин из коробки — делать ничего не нужно. Добавить в существующее приложение:

bash
npm i -D @continuum-js/vite-plugin
ts
// vite.config.ts
import { defineConfig } from "vite";
import continuum from "@continuum-js/vite-plugin";

export default defineConfig({
  plugins: [continuum()],
});

Это вся миграция: код не меняется. Семантика идентична — скомпилированный выход привязывает состояния, события и детей через те же внутренности, что и рантайм-фактори (CI гоняет весь dom-набор тестов обоими путями). Всё, в чём компилятор не уверен статически — спреды на элементах, динамические имена тегов, SVG, — просто остаётся рантайм-фактори, так что корректность никогда не зависит от ума компилятора.

Посмотрите, как компилируется

Поменяйте компонент ниже и откройте вкладку Compiled — эта панель гоняет настоящий трансформ плагина. Обратите внимание, как статика схлопывается в один шаблон, клонируемый на каждый экземпляр, а динамической «дыркой» остаётся только {likes}:

Что это даёт (таблица js-framework-benchmark, script-время, одна машина): создание 1k строк ~1,5× быстрее, добавление 1k ~1,6× быстрее, создание 10k ~1,5×; update-операции и без него в порядке.

Когда убирать: никогда не обязателен — удалите строку плагина, и ровно то же приложение поедет через рантайм-фактори (полезно для esbuild-only сетапов или при отладке сгенерированного кода).


Незнакомый термин? Вся терминология этой документации объяснена в глоссарии.