The Small Clojure Interpreter exposed for usage in script tags.
Try it out on CodePen!
See Github pages for usage.
See babashka-scittle-guestbook for a minimal full stack web application.
See releases for links to JSDelivr to get versioned artifacts.
To serve assets you can use the babashka.http-server dependency (with babashka or Clojure JVM):
(require '[babashka.http-server :as http])
(http/serve {:port 1341 :dir "resoures/public"}
@(promise) ;; wait until process is killed
To connect to a Scittle nREPL server from your editor, follow these steps:
In babashka or Clojure JVM, use the sci.nrepl dependency and run:
(require 'sci.nrepl.browser-server :as nrepl)
(nrepl/start! {:nrepl-port 1339 :websocket-port 1340})
This will run an nREPL server on port 1339 and a websocket server on port 1340. Your editor's nREPL client will connect to port 1339 and your browser, running scittle, will connect to port 1340. The nREPL server forwards messages to the browser via the websocket connection.
In your scittle website, you will need to include the following, in addition to the normal routine:
<script>var SCITTLE_NREPL_WEBSOCKET_PORT = 1340;</script>
<script src="https://cdn.jsdelivr.net/npm/scittle@0.2.0/dist/scittle.nrepl.js" type="application/javascript"></script>
Also include the CLJS file that you want to evaluate with nREPL:
<script src="cljs/script.cljs" type="application/x-scittle"></script>
Then visit cljs/script.cljs
in your editor and connect to the nREPL server,
and start evaluating!
See the resources/public/nrepl.html
file for an example. When you run bb dev
in this repository, and then open http://localhost:1341/nrepl.html
you should
be able evaluate expressions in
resources/public/cljs/nrepl_playground.cljs
. See a demo
here.
Currently when connecting from CIDER, you need to use this snippet:
(cider-register-cljs-repl-type 'sci-js "(+ 1 2 3)")
(defun mm/cider-connected-hook ()
(when (eq 'sci-js cider-cljs-repl-type)
(setq-local cider-show-error-buffer nil)
(cider-set-repl-type 'cljs)))
(add-hook 'cider-connected-hook #'mm/cider-connected-hook)
Then choose cider-connect-cljs
, select port 1339
, followed by the sci-js
REPL type.
Run bb tasks
to see all available tasks:
$ bb tasks
The following tasks are available:
clean Start from clean slate.
dev Development build. Starts webserver and watches for changes.
prod Builds production artifacts.
release Updates Github pages with new release build.
Idea by Arne Brasseur a.k.a plexus.
Copyright © 2021 - 2022 Michiel Borkent
Distributed under the EPL License. See LICENSE.