Clojureを勉強している10

  • Making HTTP Calls with ClojureScript and cljs-http
    • cljs-httpライブラリはclojurescriptでHTTPを扱うライブラリと。
    • core.asyncと組み合わせて使うととってもいい感じ?(英語を雰囲気で読んでいるのでご勘弁)
    • :require-macrosとかいう新しいのが出てきた。なになに、マクロはClojureScriptじゃなくClojureで書かれているのでこの特別なキーワードを使って参照する、と。
    • ブラウザ側から非同期でjsonをgetして表示するというのをやった。
  • DOM Control with ClojureScript and Enfocus
    • 次はEnfocusってライブラリを使う。DOMを扱うらしい。jQueryみたいなもんだろうか。
    • at関数で指定した要素の中の書き換えができるっぽい
    • 無事に書き換えられた。パチパチパチパチ👏
    • do->`で複数の変更を同時にできる。よい。
  • Event Handling with Enfocus
    • enfocusはlistenでイベントに関数を登録できる
    • enfocus.eventsをrequireしてatlisten関数を渡す。ふむ。できた。
    • ほう!enfocusはアニメーションまで付いてるのか
    • アニメーションを使うにはenfocus.effectsネームスペースをrequireする
    • fade-outで無事にフェードアウトできた
  • Summary of Our Clojure and ClojureScript Web Application
    • 今までやったことのまとめ。
    • まず、Compojureを使って作ったウェブサーバーを起動させた。
    • んで、シンプルなhtml textを返すルートを追加した。
    • CheshireというJSONライブラリの使い方を学び、JSONレスポンスを返すエンドポイントを作った。
    • 次に、RingミドルウェアJSONライブラリであるring-jsonを使って、自動的にJSONが返るようにした
    • ClojureScriptフロントエンドを追加し、cljsbuildを使って設定する方法を学んだ
    • んで、cljs-httpを使ってClojureScriptでデータを取得した
    • 最後に、Enfocusライブラリを使って、DOMを更新し、ボタンにイベントを登録し、フェードアウトするアニメーションを加えた
  • Other Useful Web Development Libraries
    • Hiccupというテンプレートライブラリがあると。コード見た感じHamlとかSlim相当だな。
    • Enliveってのもあると。こっちは静的なファイルにEnfocusみたいに変更を加えるのか。う〜ん、自分の好みはHiccup、デザイナーと協業ならEnliveみたいな感じかな?
    • Liberatorっていうコンテンツ・ネゴシエーション・ライブラリ。クライアントの要求するメディアタイプ毎の場合分けに。
    • Liberatorはlast modified timeやetagsも扱うのか。このまま扱うのは細か過ぎるが、フレームワークには同様の機能が載っていて欲しいかんじだな。
    • TransitってJSONを扱うライブラリは小さくて速いのか。う〜ん、JavaのByteArrayInputStream/ByteArrayOutputStreamなんかが露出しているなぁ。必要があれば。
    • Om。あ、これReactのインターフェースライブラリだったのか。vdomを再発明したものかと思ってた。
    • Hoplonってのがどうもフルスタックなウェブ・アプリケーション・フレームワークっぽい。ホビロンっぽい。
    • Luminusってのもある。こっちはマイクロ・フレームワークって書いてあるな。
    • データベース関連は、java.jdbcがローレベル、KormaSQL抽象化、YesqlSQLライブラリ。
    • あと、Datomicってイミュータブル・データベースがあるらしい。イミュータブル・データベースってよくわからんな。初めて聞く。
    • 第7章おわり。明日は第8章、マクロの話。

Living Clojure

Living Clojure

  • Chapter 7 Creating Web Applications with Clojure
    • Making HTTP Calls with ClojureScript and cljs-http
    • DOM Control with ClojureScript and Enfocus
    • Event Handling with Enfocus
    • Summary of Our Clojure and ClojureScript Web Application
    • Other Useful Web Development Libraries