1. knjname

    No comment

    knjname
Changes in body
Source | HTML | Preview
@@ -84,11 +84,11 @@
### MVCフレームワークより楽ちん
モデルの変更をビューに反映できるMVCフレームワークも一時期流行っていましたが、モデルの○○の値が変わったから、ビューの☓☓を書き換えるという手続きはやっぱり面倒です。
-## イミュータブル
+### イミュータブル
上記のメリットだけだと、JSで頑張ればいいじゃんと思われそうなので、ClojureScript/re-frame特有のメリットも述べていきます。
ClojureScriptは、Clojureなので、値(数値、文字列、セット、マップ、リストなど)全てが不変です。
@@ -100,11 +100,11 @@
一般的にJSで記述されるReduxでは、値のイミュータビリティは頑張って確保するようです。あんまり詳しくないのでそれがどれぐらい面倒かは知りませんが、ClojureScriptでは何もしなくても値が全部不変なのは気楽です。
(とはいいつつ、反面あらゆる値が書き換えられないのは、既存の言語経験者にとって、もどかしさという面でも大きく代償があります。)
-## idiomatic: JSXとかいらない
+### idiomatic: JSXとかいらない
僕が最初このJSXを見た時、戦慄してしまいました。
```js
var Hello = React.createClass({
@@ -129,25 +129,25 @@
[:div "Hello " name])))
```
なお、ClojureScript自体がJS世界で不自然な記法そのものという指摘は受け付けておりません。
-## idiomatic: サーバサイドとクライアントサイドを同じ言語で構築可能
+### idiomatic: サーバサイドとクライアントサイドを同じ言語で構築可能
サーバサイドでClojureでWeb APIを構築、クライアントサイドでClojureScriptでUIを構築するといったことが可能です。
文法も似通っており、[工夫すれば両者でコードのシェアも可能](https://github.com/clojure/clojurescript/wiki/Using-cljc)です。
-## マクロ
+### マクロ
ClojureScriptはClojureで書いたマクロを用いることができます。
ClojureScriptのコンパイル時限定ですが、Clojureによる、JVMの能力をフルに用いた計算が可能です。
普通にマクロするのもよし、複雑な外部ファイル(仕様書とか)をインクルードするもよし、インターネットを参照してソース吐き出すもよし、という感じで普通のJSより夢が多めになってます。
-## REPL環境
+### REPL環境
ClojureScriptには[figwheel](https://github.com/bhauman/lein-figwheel)といったREPL環境が揃っており、Emacsから直接ブラウザに繋いでファイル内の式をブラウザ上で評価させたり、アプリを自動リロードさせて漸次的に開発するなどが可能になっています。
これは非常に強力です。