Skip to content

Какой API выбрать

Raph предоставляет несколько уровней API. Выбирайте самый высокий уровень, который покрывает текущую задачу.

Raph: один default runtime

Static facade подходит, когда приложению достаточно одного общего runtime:

ts
import { Raph } from '@endge/raph'

Raph.set('session.userId', 42)
const userId = Raph.get('session.userId')

Через Raph доступны shared data, signals, effects, watch, nodes, phases, subscriptions, transactions и derived data.

RaphApp: самостоятельный instance

Используйте RaphApp, если нужен отдельный store и независимый execution lifecycle:

ts
import { RaphApp, SchedulerType } from '@endge/raph'

const preview = new RaphApp({
  scheduler: SchedulerType.Microtask,
})

Это удобная граница для sandbox, preview, editor instance или другого автономного контура.

RaphKernel и RaphRuntime: shared data, разные execution lanes

Если несколько runtime должны видеть одни данные, но владеть разными нодами, фазами и scheduler, создайте общий kernel:

ts
import { RaphKernel, SchedulerType } from '@endge/raph'

const kernel = new RaphKernel({ id: 'workspace' })

const ui = kernel.createRuntime({
  id: 'ui',
  scheduler: SchedulerType.AnimationFrame,
})

const computations = kernel.createRuntime({
  id: 'computations',
  scheduler: SchedulerType.Microtask,
})

RaphKernel остаётся владельцем данных и transactions. Каждый RaphRuntime самостоятельно владеет execution graph и lifecycle.

RaphNode: собственные runtime-объекты

Наследуйте RaphNode, когда объект должен:

  • участвовать в dependency graph;
  • подписываться на data paths;
  • выполняться в фазах;
  • иметь parent/children и local properties;
  • освобождать свои подписки вместе с lifecycle.

DataPath и RaphRouter: инфраструктура без runtime

Эти классы можно использовать отдельно:

  • DataPath — для разбора и нормализации путей;
  • RaphRouter<T> — для сопоставления путей и масок с произвольным payload.

Выбор по сценарию

НужноВыбор
Простая общая реактивностьRaph
Полностью изолированный runtimeRaphApp
Общие данные и несколько execution-контуровRaphKernel + RaphRuntime
Пользовательские графовые сущностиRaphNode
Только path matchingDataPath + RaphRouter
Быстрые свойства дерева нодLocal Runtime