121 lines
3.5 KiB
Markdown
121 lines
3.5 KiB
Markdown
# mw3
|
|
|
|
|
|
## Development
|
|
|
|
Open a terminal and type `lein repl` to start a Clojure REPL
|
|
(interactive prompt).
|
|
|
|
In the REPL, type
|
|
|
|
```clojure
|
|
(run)
|
|
(browser-repl)
|
|
```
|
|
|
|
The call to `(run)` starts the Figwheel server at port 3449, which takes care of
|
|
live reloading ClojureScript code and CSS. Figwheel's server will also act as
|
|
your app server, so requests are correctly forwarded to the http-handler you
|
|
define.
|
|
|
|
Running `(browser-repl)` starts the Weasel REPL server, and drops you into a
|
|
ClojureScript REPL. Evaluating expressions here will only work once you've
|
|
loaded the page, so the browser can connect to Weasel.
|
|
|
|
When you see the line `Successfully compiled "resources/public/app.js" in 21.36
|
|
seconds.`, you're ready to go. Browse to `http://localhost:3449` and enjoy.
|
|
|
|
**Attention: It is not needed to run `lein figwheel` separately. Instead we
|
|
launch Figwheel directly from the REPL**
|
|
|
|
## Trying it out
|
|
|
|
If all is well you now have a browser window saying 'Hello Chestnut',
|
|
and a REPL prompt that looks like `cljs.user=>`.
|
|
|
|
Open `resources/public/css/style.css` and change some styling of the
|
|
H1 element. Notice how it's updated instantly in the browser.
|
|
|
|
Open `src/cljs/mw3/core.cljs`, and change `dom/h1` to
|
|
`dom/h2`. As soon as you save the file, your browser is updated.
|
|
|
|
In the REPL, type
|
|
|
|
```
|
|
(ns mw3.core)
|
|
(swap! app-state assoc :text "Interactivity FTW")
|
|
```
|
|
|
|
Notice again how the browser updates.
|
|
|
|
### Lighttable
|
|
|
|
Lighttable provides a tighter integration for live coding with an inline
|
|
browser-tab. Rather than evaluating cljs on the command line with weasel repl,
|
|
evaluate code and preview pages inside Lighttable.
|
|
|
|
Steps: After running `(run)`, open a browser tab in Lighttable. Open a cljs file
|
|
from within a project, go to the end of an s-expression and hit Cmd-ENT.
|
|
Lighttable will ask you which client to connect. Click 'Connect a client' and
|
|
select 'Browser'. Browse to [http://localhost:3449](http://localhost:3449)
|
|
|
|
View LT's console to see a Chrome js console.
|
|
|
|
Hereafter, you can save a file and see changes or evaluate cljs code (without saving a file). Note that running a weasel server is not required to evaluate code in Lighttable.
|
|
|
|
### Emacs/Cider
|
|
|
|
Start a repl in the context of your project with `M-x cider-jack-in`.
|
|
|
|
Switch to repl-buffer with `C-c C-z` and start web and figwheel servers with
|
|
`(run)`, and weasel server with `(browser-repl`). Load
|
|
[http://localhost:3449](http://localhost:3449) on an external browser, which
|
|
connects to weasel, and start evaluating cljs inside Cider.
|
|
|
|
To run the Clojurescript tests, do
|
|
|
|
```
|
|
lein doo phantom
|
|
```
|
|
|
|
## Deploying to Heroku
|
|
|
|
This assumes you have a
|
|
[Heroku account](https://signup.heroku.com/dc), have installed the
|
|
[Heroku toolbelt](https://toolbelt.heroku.com/), and have done a
|
|
`heroku login` before.
|
|
|
|
``` sh
|
|
git init
|
|
git add -A
|
|
git commit
|
|
heroku create
|
|
git push heroku master:master
|
|
heroku open
|
|
```
|
|
|
|
## Running with Foreman
|
|
|
|
Heroku uses [Foreman](http://ddollar.github.io/foreman/) to run your
|
|
app, which uses the `Procfile` in your repository to figure out which
|
|
server command to run. Heroku also compiles and runs your code with a
|
|
Leiningen "production" profile, instead of "dev". To locally simulate
|
|
what Heroku does you can do:
|
|
|
|
``` sh
|
|
lein with-profile -dev,+production uberjar && foreman start
|
|
```
|
|
|
|
Now your app is running at
|
|
[http://localhost:5000](http://localhost:5000) in production mode.
|
|
## License
|
|
|
|
Copyright © 2016 FIXME
|
|
|
|
Distributed under the Eclipse Public License either version 1.0 or (at
|
|
your option) any later version.
|
|
|
|
## Chestnut
|
|
|
|
Created with [Chestnut](http://plexus.github.io/chestnut/) 0.9.1 (3a675806).
|