心 智 七 篇 · Seven Mental Models
← Knowledge Atlas · 实体

Cycle.js

Cycle.js:基于响应式编程的 JavaScript 框架,分形架构的典型实现,纯函数组件
实体 · CYCLE.JS · André Staltz · sources→sinks 纯函数 · 分形架构

Cycle.js

基于响应式编程的 JS 框架——应用即纯函数,分形架构的典型实现

Cycle.js 将应用视为纯函数:接收外部世界的输入(sources,observables 形式),返回对外部世界的输出(sinks,也是 observables)。每个组件都是 sources → sinks 的纯函数,与整个应用签名相同——这是分形架构的典型实现:任意层级的接口结构相同,可以递归组合。

架构特征
统一接口每个组件 sources → sinks 签名与整个应用相同——任意深度的嵌套保持接口一致性
递归组合组件内部调用其他组件,如同函数调用其他函数——分形自相似结构
副作用 → Driver 层组件无副作用;副作用被推到框架的 driver 层——胶水与逻辑分离
与 Agent 系统的结构同构
隐式循环对应
Cycle.js:sources → sinks 纯函数;Agent:context → actions,harness 处理副作用
约束而非预设
两者都通过约束(而非预设路径)塑造行为——行为从交互中涌现
胶水-逻辑分离
Driver 层 ↔ Harness 层——副作用(I/O)与推理(纯逻辑)分离的同构设计
→ Fractal Architecture · Implicit Loop Architecture · Harness EngineeringAnton Telesh (2016)

Cycle.js

概述

Cycle.js 是一个基于响应式编程的 JavaScript 框架,由 André Staltz 创建。其核心设计理念是将应用视为纯函数:接收外部世界的输入(sources,observables 形式),返回对外部世界的输出(sinks,也是 observables)。

架构特征

Cycle.js 是分形架构的典型实现:

  • 统一接口:每个组件都是 sources → sinks 的纯函数,与整个应用的签名相同
  • 递归组合:组件内部可以调用其他组件,如同函数调用其他函数
  • 无副作用组件:副作用被推到框架的 driver 层(胶水与逻辑分离的体现)
  • 引导分离:组件的 wiring 在组件声明之外完成

与 Agent 系统的关联

Cycle.js 的”纯函数接收 observables、返回 observables”模式与隐式循环架构有结构上的相似性——两者都通过约束(而非预设路径)塑造行为。Agent 接收 context,产出 actions,由 harness 处理副作用——这与 Cycle.js 将副作用推到 driver 层的设计同构。

References

  • Anton Telesh, “Fractal Architecture”, 2016-03-16 — sources/fractal-architecture-cyclejs.md