Тема
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.
Основная модель
| Сущность | Ответственность |
|---|---|
Raph | Static facade над default RaphApp |
RaphKernel | Shared 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 поддерживает два совместимых, но разных контура:
- Data-path контур хранит общие данные в
RaphKernel. Операцииget,set,mergeиdeleteадресуют значения через пути и публикуют события. - Local runtime хранит быстрые свойства непосредственно на
RaphNode. Эти значения не проходят черезDataPathи используются для node-local состояния, например layout-флагов или состояния представления.
Не смешивайте их без необходимости: shared business data принадлежит kernel, а local-состояние — конкретной runtime-ноде.