As the author of shadow-build [1] and shadow [2] I'm obviously a bit biased on 
what to use on the CLJS side of things so I'll skip that part.

As for CSS and other "static" assets (images, fonts, ...) I found it is best to 
make it a build/compile step and deploy it seperately from the application. 
Many tools in other languages or even Clojure aim to make it part of the 
request/response cycle via "middleware" (ring, rack, etc). I found this to be 
absolutely unacceptable when the apps reach a certain point since it gets quite 
common to release a new "client" build (cljs, css, ...) without 
touching/restarting the server which is required if you ship everything in a 
jar. That requires a seperate server for static files but that is my normal 
setup anyways. (nginx -> varnish -> clojure)

As for the tools used:
- SASS/SCSS via ruby gem
- thor gem (also ruby, clojure startup is too slow) for versioning/packaging
- capistrano (also ruby) to build/deploy remote
- custom file watcher to invoke the shell commands (clojure)

That stack is still completely ruby based since "it works" and has seen quite a 
lot more work and use than their clojure counterparts (if they exist).

I don't have any tips on what to avoid since I haven't tried anything "new" for 
quite some time, apart from the CLJS bits of course which I had very specific 
requirements that weren't met anywhere else. ;)

HTH,
/thomas

PS: @mike: shadow-build can definitely help with multiple targets, happy to 
help if you have questions. 

[1] https://github.com/thheller/shadow-build
[2] https://github.com/thheller/shadow


On Sunday, October 19, 2014 9:29:01 PM UTC+2, Colin Yates wrote:
> Any advice for a newbie about to embark on a new non-trivial SPA using cljs, 
> om and (om-)bootstrap. 
> 
> I am not a newbie in terms of CSS, JS (coffeescript for the win!) or Clojure 
> (despite the evidence :)).
> 
> The app itself will live on an internal LAN with a small number of clients, 
> heavyish logic but low load. It will be heavily influenced by CQRS and event 
> sourcing, with the server transmitting "domain events since you last checked 
> in" to the client.
> 
> In particular, what do you wish you had done differently, specifically in 
> regard to:
>  - using JS from cljs (which unfortunately still makes my eyes bleed :))
>  - integrating 3rd party components (e.g. jquery ui) with om
>  - unit testing (previously used midge work but I think I will stick with 
> core.test with the humane plugin)
>  - cross browser javascript (I assume the google closure library helps here)
>  - hooking up a browser to the REPL (IE8 unfortunately!)
>  - web sockets/polling (again IE8)
> 
> I am close to finalising on (but counter-arguments welcome!):
>  - Cursive clojure (falling back to emacs if necessary - so far it isn't)
>  - lein-cljsbuild
>  - garden for CSS (but happy to hear stories around asset management)
>  - core.typed
>  - core.test or midje
>  - transmit for encoding data
> 
> (I have had a look at luminus and it seems great. However, I "get" om 
> architecturally more than reagent and I have already settled on a number of 
> other libraries. I have also looked at pedestal but it needs to be deployed 
> on Windows which they don't support.)
> 
> Anything you wish somebody had told you before you started?
> 
> Thanks a bunch!

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to