Clojurescript truly is alien technology. Modern react has basically adopted Reagent's programming style with Hooks. Clojurescript/Reagent were 5 years ahead of the curve, truly amazing.
Clojurescript gives you a live repl, immutable data by default, core.async, macros, and an amazing consistent core library. None of these things are ever going to come to the javascript world
I'm 1000% sold on Clojure (and have done some production back-end tools with it), but every time I try to do front end or mobile, I struggle without outdated guides or books and relative lack of other current online resources to get me reasonably down the road toward success.
Apparently people who successfully use these tools are happily working and not having the time to educate new people. Of course it's not their responsibility, but it does seem that the Clojure community is far less involved in nurturing new users than many other languages/toolkits/frameworks.
Full-stack setup with Boot and hot reloading on both front and backend, with some basic SASS, DB, and configuration setup as well.
Have a look; even if it's not for you, it might give you some idea how to set up an application and dev environment.
deps.edn, shadow clj, and regeant seems like what I would try and target at the moment unless trying to do full stack datoms
In which case Fulcro looks like the future there just very complicated to learn I think I need to learn graphql first to help my understanding
http://www.luminusweb.net/docs/clojurescript.html
You can create a new project with Clojure/Script support by adding different flags. For example, for a re-frame project:
lein new luminus myapp +re-frame
This will generate the needed boilerplate and configuration. You can now start the server by running: lein run
The server will start a nREPL that you can connect the editor to on port `7000`, this is defined in the `my-dev-config.edn` file. The typical workflow is to connect to the REPL, and run your code as you're writing it.Next, you start ClojureScript compiler in a separate terminal with:
lein figwheel
The front-end workflow typically involves having figwheel running while you write the code, and it will automatically push changes to the browser. You can also connect to the nREPL started by Figwheel from the editor. This port is specified in `project.clj` under `:figwheel` with the `:nrepl-port` key. The default is `7002`. Once you connect the editor you run `(cljs)` function to switch to the ClojureScript REPL. You can now evaluate any code that's running in the browser. Note that Figwheel has to be started, and the page loaded in the browser first.The project is set up to keep all the code in the same repository, and you have three separate source paths:
* `clj` - server-side code * `cljc` - code shared between the server and the client * `cljs` - client-side code
Packaging the app is done by running
lein uberjar http://cljs.github.io/api/cljs.spec.alpha/I can't remember the last time I had a type error, or maybe if I did it was so trivial to fix that it's not sticking out. Type errors wouldn't even rate in the top ten categories of bugs that I make or encounter, so it seems odd to pick a programming language with that as a primary concern.
All else being equal, it does seem nice at some theoretical level to have a compiler that checks type correctness, but there's lots of other issues that would also be nice to have the compiler handle, which it often doesn't. For example, TypeScript seems to (like JavaScript, so far) not have any bigints, which seems to me a much worse flaw than lacking a type checker. What good is it for the computer to check my usage of types, if it can't even do arithmetic correctly with them?
But maybe this is just more of that nice feeling. I can't recall the last time I overflowed a fixint, either. (64 bits help with that -- or even 53 bits.) It's admittedly not a major practical concern in my daily programming life.
Maybe there are people who fret about type safety the way I fret about overflow. I assume it must be a concern among some styles of programming, because I keep hearing about how languages without compile-time type checkers are bad, even though my experience does not agree.
(Then people go and use languages where the type system is merely at the level of "Number" and "String", and it lets you pass a loop index to a function expecting a height in centimeters, and that's considered acceptably type-safe.)
Super simple, super modern and easy to use. You will love it and forget those hyped madness what others do...
Additionally, Ember.js devs get the highest salary in frontend world. ;)
IIRC react requires nearly 300MB worth of npm packages just to get the hello world example to run. How does Ember fare in comparison?