TL;DR
Clojure と ClojureScript で UI を作るためのライブラリ。純粋関数とただのデータで UI を組み立て、描画をドメインのロジックや状態から切り離す。
なぜ必要か
UI が純粋関数で作られるので、データを渡して出力を確かめるだけでテストでき、ブラウザの自動操作がいらない。
仕組み
ビューは Hiccup で書く。Hiccup はベクタ、キーワード、マップ、文字列といった Clojure のデータリテラルなので、追加のビルドの手順はいらない。Replicant は、Hiccup をサーバーで描画することも、ブラウザで DOM を更新することもできる。
Replicant は状態を持つコンポーネントの仕組みを提供しない。UI の部品は Hiccup を返すただの関数なので、サーバーでもクライアントでも動く。イベントハンドラもデータとして書けるので、1 つのグローバルなハンドラでまとめて処理できる。
状態管理の仕組みも持たない。描画のたびにルートからドメインのデータを使って UI 全体を作り直す。atom、サブスクリプション、部分木だけの描画、コンポーネントのローカルな状態はない。