Skip to content

Raph

Raph — низкоуровневый TypeScript runtime для приложений, в которых изменения данных должны проходить через явную маршрутизацию, граф зависимостей и управляемые фазы выполнения.

Библиотека объединяет несколько механизмов:

  • общее хранилище данных с адресацией через DataPath;
  • подписки на точные пути и маски;
  • граф runtime-нод и зависимостей между ними;
  • многофазное выполнение с настраиваемым scheduler;
  • синхронные материализованные зависимости между ветками данных;
  • быстрые local-свойства, принадлежащие конкретным нодам.

Raph используется как инфраструктурная основа runtime в Endge Core и Nova, но не зависит от Vue, DOM или Canvas и может применяться отдельно.

Статус API

Библиотека пригодна для использования, но её API пока считается экспериментальным. При обновлении версии проверяйте release notes и TypeScript-контракты.

Когда подходит Raph

Raph полезен, когда приложению нужны:

  • обновления по структурированным путям вроде orders[id=10].status;
  • явный порядок вычисления зависимых runtime-объектов;
  • несколько фаз, например update, layout и render;
  • общий data-store для нескольких изолированных execution-контуров;
  • инкрементальная материализация больших коллекций по устойчивому ключу;
  • управляемый lifecycle нод, подписок, циклов и derived-вычислений.

Для обычной формы, небольшого Vue-компонента или простого глобального состояния Raph чаще всего избыточен. В таких случаях проще использовать локальное состояние framework или специализированный state manager.

Основная модель

СущностьОтветственность
RaphStatic facade над default RaphApp
RaphKernelShared data-store, transactions, derived graph и доставка data events
RaphRuntimeНоды, фазы, scheduler и execution lifecycle одного runtime lane
RaphAppСамостоятельный runtime с собственным kernel
RaphNodeЕдиница dependency graph и local tree
DataPathРазбор и каноническое представление путей и масок
RaphRouterСопоставление путей с зарегистрированными payload

Начните с установки и быстрого старта, затем выберите подходящий уровень API.

Два контура данных

Raph поддерживает два совместимых, но разных контура:

  1. Data-path контур хранит общие данные в RaphKernel. Операции get, set, merge и delete адресуют значения через пути и публикуют события.
  2. Local runtime хранит быстрые свойства непосредственно на RaphNode. Эти значения не проходят через DataPath и используются для node-local состояния, например layout-флагов или состояния представления.

Не смешивайте их без необходимости: shared business data принадлежит kernel, а local-состояние — конкретной runtime-ноде.