Cycle.js
Source
Evernote/Inbox/Cycle.js.md
Summary
Cycle.js는 함수형 및 반응형 프로그래밍을 기반으로 한 JavaScript 프레임워크로, 애플리케이션을 순수 함수 main()으로 모델링합니다. 외부 세계와의 상호작용은 ‘소스(Sources, 입력)‘와 ‘싱크(Sinks, 출력)‘로 명확히 구분되며, 실제 I/O 작업은 ‘드라이버(Drivers)‘라는 플러그인 형태로 분리됩니다. 이 구조를 통해 상태 관리의 복잡성을 줄이고, 데이터 흐름을 명시적으로 시각화하며, 테스트 용이성과 코드 가독성을 높이는 것을 목표로 합니다.
Key Points
- 핵심 추상화: 애플리케이션을 외부 입력(Sources)을 받아 외부 출력(Sinks)을 반환하는 순수 함수
main()으로 정의. - 반응형 스트림: xstream, RxJS 등의 라이브러리를 사용하여 이벤트와 비동기 처리를 선언적으로 관리하며,
this나setState와 같은 명령형 상태 변경을 배제. - 드라이버 아키텍처: DOM, HTTP 등 실제 I/O 효과는 드라이버라는 플러그인으로 분리되어 애플리케이션 로직과 격리됨. 이로 인해 드라이버 교체 및 테스트가 용이함.
- 명시적 데이터 흐름: 코드 내 스트림 선언이 데이터 흐름 그래프의 노드에 대응되어, 입력에서 출력까지의 데이터 이동 경로를 추적하기 쉬움.
- 간결성:
run(app, drivers)라는 단일 진입점과 스트림 연산을 통해 복잡한 데이터 흐름을 간결하게 표현.