The most barebones version is very simple:
lein has a plugin called lein-cljsbuild. In your project.clj there is a way to specify the directories this program needs to watch for file changes. lein cljsbuild has an option "auto" which activates the directory watcher and automatically recompiles the cljs files when one of them changes.
This long-running program keeps the same jvm running for all the compiles, and lets you iterate more quickly.