はじめに
おはようございます。当ブログにアクセス頂き、ありがとうございます。Clojurescriptの深みに日々はまっている、たなけんです。
本エントリでは、Clojurescriptでのrepl使用方法を記載します。
Clojurescriptのreplの種類
Clojurescriptでは、以下の2種類のreplを利用することができます。- Rihno環境
- Webブラウザ環境
今回は、ブラウザ上でのClojurescriptの挙動を確認するため、後者のWebブラウザ環境でのreplの使用方法について記載します。
Webブラウザ環境のreplでは、cljsbuildプロセスが入出力を処理し、Webブラウザプロセスが入力されたS式を評価します。
cljsbuildによるrepl利用の準備
cljsbuildはコンパイルだけではなく、replの起動、テストの実行といった機能も兼ね備えています。しかし、Webブラウザ環境でreplを起動するには、接続用のhtmlを読み込むClojurescriptおよび接続用のClojurescriptが必要となります。今回はClojurescriptのwikiを例として取り上げますが、実際に開発しているアプリケーションに、数行付け加えるだけでも、Webブラウザ環境のreplを使用することができます。下記で示される、コードはClojurescriptのrepl利用の手引きからの引用となります。
htmlファイル
何の変哲も無い、ただ接続用のClojurescriptを読み込むだけのhtmlです。
しかし、1点だけ注意事項があります。それは、必ずボディ部でscript要素を宣言しなくてはいけないということです。
私は当初ヘッド部でJavascriptライブラリの読み込みを宣言しており"Type error: parentElm is null"というエラーに悩まされてしまいました。
接続用のClojurescript
clojure.browser.replを利用し、cljsbuildで起動したポートへ接続します。
clojure.browser.repl/connect関数: 引数のurlへ接続し、replへの入力を受け付ける
起動から接続まで
以下の手順によりreplを起動し、入出力プロセスと評価プロセスを接続します。- コンソールを起動、cljsbuildを利用しているプロジェクトのルートへ移動
- コンソールから、lein trampoline cljsbuild repl-listenと入力し、replを起動
- Webブラウザを起動し、接続用htmlを読み込む
- 同じWebブラウザからurl(デフォルトlocalhost:9000)へアクセスし、cljsbuildのreplと、Webブラウザの接続を確立(接続用のhtmlファイル名がindex.htmlではない場合(例. not-index.html)、urlはhttp://localhost:9000/not-index.htmlのようになる)
replの利用
接続が確立された後は、コンソールから評価したい式を入力することで、ブラウザのdom要素等を操作することができます。また、load-namespace関数を使うことで、クラスパス内の任意のClojurescriptファイルを読み込むことができます。
今回の作業は以上。最後までお読み頂きありがとうございました。
たなけん(作業時間45分)
0 件のコメント:
コメントを投稿