ReactをClojureScriptで書くため、Reagentの勉強をまずはratomを使わない簡単なコンポーネントを作るところからはじめようと思います。ClojureScriptとFigwheelのシンプルなテンプレートの[reagent-figwheel](https://github.com/gadfly361/reagent-figwheel)を使ったサンプルを探していると、[Static Mock Using Reagent](http://www.okaythree.com/articles/2015/04/21/static-mock-using-reagent/)のよい例が見つかりました。参考になるプログラムを読みながら実際に手を動かしながら勉強していくのが一番よいです。
ReactをClojureScriptで書くため、Reagentの勉強をまずはratomを使わない簡単なコンポーネントを作るところからはじめようと思います。ClojureScriptとFigwheelのシンプルなテンプレートのreagent-figwheelを使ったサンプルを探していると、Static Mock Using Reagentのよい例が見つかりました。参考になるプログラムを読みながら実際に手を動かしながら勉強していくのが一番よいです。
プロジェクトの作成
Clojureの開発はDockerとDocker Composeを使って行います。
$ cd ~/clojure_apps $ tree -L 1 . ├── Dockerfile └── docker-compose.yml
$ docker-compose run --rm --service-ports lein repl nREPL server started on port 51843 on host 127.0.0.1 - nrepl://127.0.0.1:51843 REPL-y 0.3.5, nREPL 0.2.6 Clojure 1.6.0 OpenJDK 64-Bit Server VM 1.7.0_79-b14 Docs: (doc function-name-here) (find-doc "part-of-name-here") Source: (source function-name-here) Javadoc: (javadoc java-object-or-class-here) Exit: Control+D or (exit) or (quit) Results: Stored in vars *1, *2, *3, an exception in *e
user=>
REPLで(run)を実行してアプリの起動
user=> (run) 2015-05-21 14:56:17.542:INFO:oejs.Server:jetty-7.6.13.v20130916 2015-05-21 14:56:17.582:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:10555 Starting web server on port 10555 . #<Server org.eclipse.jetty.server.Server@7ef1accd> user=>
次に(start-figwheel)を実行してFigwheelを起動します。
user=> (start-figwheel) Starting figwheel. #<core$future_call$reify__6320@17e02401: :pending> user=> Figwheel: focusing on build-id 'app' Compiling ClojureScript. Figwheel: Starting server at http://localhost:3449 Figwheel: Serving files from '(dev-resources|resources)/public' Compiling "resources/public/js/app.js" from ["src""dev"]... Successfully compiled "resources/public/js/app.js"in 23.719 seconds. notifying browser that file changed: /js/app.js notifying browser that file changed: /js/out/goog/deps.js notifying browser that file changed: /js/out/my_checklist/core.js notifying browser that file changed: /js/out/cljs/user.js Figwheel: client disconnected :normal