TL;DR

Clojure と ClojureScript で UI を作るためのライブラリ。純粋関数とただのデータで UI を組み立て、描画をドメインのロジックや状態から切り離す。

なぜ必要か

UI が純粋関数で作られるので、データを渡して出力を確かめるだけでテストでき、ブラウザの自動操作がいらない。

仕組み

ビューは Hiccup で書く。Hiccup はベクタ、キーワード、マップ、文字列といった Clojure のデータリテラルなので、追加のビルドの手順はいらない。Replicant は、Hiccup をサーバーで描画することも、ブラウザで DOM を更新することもできる。

Replicant は状態を持つコンポーネントの仕組みを提供しない。UI の部品は Hiccup を返すただの関数なので、サーバーでもクライアントでも動く。イベントハンドラもデータとして書けるので、1 つのグローバルなハンドラでまとめて処理できる。

状態管理の仕組みも持たない。描画のたびにルートからドメインのデータを使って UI 全体を作り直す。atom、サブスクリプション、部分木だけの描画、コンポーネントのローカルな状態はない。

関連

出典