本記事では ClojureScript 製 SPA をモジュール分割するためのパターンを紹介します。 サンプルプロジェクトは下記。 背景 最近 Blockchain に興味があり、Ethereum DApp(分散型アプリケーション)を ClojureScript + re-frame で開発していました。 スマートコントラクト開発の知見は別途まとめたいと思いますが、フロント開発を振り返ると Ethereum エコシステム周りに起因する様々なつらみが存在しました。 使うべきライブラリが多い。 web3.js, ipfs-api, uport-connect... それぞれに初期化パラメータが存在し、環境によって切り分けが必要。 生成したインスタンスに紐づく状態が変化し得る。 インスタンス間の依存関係も存在。 uPort に繋いだら web3 インスタンスを初期化し直さないといけなかったり。