LoginSignup
5
6

More than 5 years have passed since last update.

ClojureScript の初期セットアップと nREPL による Hello World

Last updated at Posted at 2016-08-29

Leiningen のインストール

$ mkdir -p ~/bin
$ cd ~/bin
$ wget https://raw.github.com/technomancy/leiningen/stable/bin/lein
$ chmod 755 lein
$ ./lein version
Downloading Leiningen to /home/cuzic/.lein/self-installs/leiningen-2.7.0-
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  C
                                 Dload  Upload   Total   Spent    Left  S
100   605    0   605    0     0    584      0 --:--:--  0:00:01 --:--:-- 
100 14.6M  100 14.6M    0     0   239k      0  0:01:02  0:01:02 --:--:-- 
Leiningen 2.7.0 on Java 1.7.0_85 OpenJDK 64-Bit Server VM

プロジェクトの開始

$ lein new piggieback_project
$ cd piggieback_project

project.clj の編集

project.clj を下記のように編集する

project.clj
(defproject piggieback_project "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.8.0"]
                 [org.clojure/clojurescript "1.7.228"]]
  :profiles {:dev {:dependencies [[com.cemerick/piggieback "0.2.1"]
                                  [org.clojure/tools.nrepl "0.2.10"]]
                   :repl-options {:nrepl-middleware
                                  [cemerick.piggieback/wrap-cljs-repl]}}})
  • nREPL : リモートで Clojure のコードを評価できる Clojure のライブラリ
  • Piggieback : nREPL を使ってリモートの ClojureScript 環境で評価できるようにする nREPL ミドルウェア

greet.html の編集

greet.html
<html>
<body>
<script type="text/javascript" src="out/main.js"></script>
</body>
</html>

src/piggieback_project/core.cljs の編集

src/piggieback_project/core.cljs
(ns piggieback-project.core
  (:require [clojure.browser.repl :as repl]))

(defonce conn
  (repl/connect "http://localhost:9000/repl"))

lein repl の開始

$ lein repl
user=> (require 'cljs.build.api)
user=> (cljs.build.api/build "src" {:main 'piggieback-project.core :output-to "out/main.js" :verbose true})
user=> (require 'cljs.repl.browser)

これで、 9000 番ポートで待ち受けるようになる。

localhost:9000 に接続

$ firefox http://localhost:9000/

lein repl

cljs.user=> (js/alert "Hello World from Piggieback!")

これでブラウザで、 Hello World from Piggeback! というポップアップが表示される

参考文献

Learning ClojureScript
piggieback_project

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6