From JS To CLJS

100 Views

May 12, 17

スライド概要

JavaScriptからClojureScriptへ
ClojureをJavaScriptの世界でも利用しよう!

profile-image

「楽しく楽にcoolにsmartに」を理想とするprogrammer/philosopher/liberalist/realist。 好きな言語はClojure, Haskell, Python, English, français, русский。 読書、プログラミング、語学、法学、数学が大好き! イルカと海も大好き🐬

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

From JS To CLJS - Adieu JavaScript -

2.

Self-introduction lagénorhynque /laʒenɔʁɛ k ̃ / カマイルカ (defprofile lagénorhynque :name "Kent OHASHI" :account @lagenorhynque :company "Opt, Inc." :languages [Clojure Haskell Python Scala English français Deutsch русский] :interests [programming language-learning mathematics] :contributing [github.com/japan-clojurians/clojure-site-ja])

3.

Contents 1. 2. 3. 4. 5. What is ClojureScript? Why does ClojureScript matter? Language Libraries Tools

4.

What is ClojureScript?

5.

ClojureScript公式サイトによると ClojureScript is a compiler for Clojure that targets JavaScript. It emits JavaScript code which is compatible with the advanced compilation mode of the Google Closure optimizing compiler.

6.

ClojureScript (CLJS) JavaScriptをターゲットとしたClojureのコンパイラ cf. Clojure: Java/JVMがターゲット Google Closure Compilerのadvanced compilation mode互換のJSコードを⽣成

7.

compilation process from ClojureScript: Up and Running

8.

Why does ClojureScript matter?

9.

JavaScriptの世界でもClojureのメリットを REPL駆動のインタラクティブな開発 関数型プログラミング 並⾏プログラミング 現代的なLisp → Webフロントエンド, Electron, React Native, etc.

10.

フロントエンド・サーバサイド間のスムーズな連携 コードの共有 .cljc & reader conditionals データの共有 EDN, Transit (cf. JSON, MessagePack) → フロントエンドもサーバサイドもClojure

11.

Language

12.

syntax ClojureScript Synonyms cf. ClojureScript - Differences from Clojure Macros ※ CLJSのWeb REPL(e.g. Replumb REPL)で試そう

13.

reader conditionals Clojure, ClojureScriptなどプラットフォーム間での 差異を吸収するための仕組み 拡張⼦ .cljc のファイル内で利⽤ #? と #?@ (defn str->int [s] #?(:clj (java.lang.Integer/parseInt s) :cljs (js/parseInt s)))

14.

Libraries

15.

library references The Clojure Toolbox CrossClj razum2um/awesome-clojure

16.

example: Reagent A minimalistic ClojureScript interface to React.js ReactチュートリアルのReagent実装 lagenorhynque/react-tutorial cf. Om 採⽤例: circleci/frontend

17.

Tools

18.

build Leiningen /ˈlainɪŋən/ Clojure, ClojureScript共通のビルドツール プラグインやプロジェクトテンプレートが豊富 設定ファイル project.clj (e.g. react-tutorial) cf. Boot

19.

hot loading Leiningenプラグイン lein-figwheel ClojureScriptのオートビルド ブラウザのオートリロード etc.

20.

optimization Google Closure Compiler CLJSのコンパイラオプション :optimizations level effect :none 最適化なし(デフォルト) :whitespace コメント/空⽩など削除 :simple ローカル変数/関数引数リネーム :advanced グローバル変数/関数名/プロパ ティリネーム,デッドコード削 除,etc.

21.

Further Reading サイト ClojureScript: 公式サイト cf. Clojure clojure/clojurescript: GitHub 書籍 ClojureScript: Up and Running 翻訳: 『⼊⾨ ClojureScript』 ClojureScript Unraveled