I think this will be helpful for anybody in 2020. It took me a lot of time to research. 1. latest available dependencies and plugins that work with the latest java. :plugins [[lein-cljsbuild "1.1.7"] [lein-figwheel "0.5.19"]] :dependencies [[org.clojure/clojure "1.10.0"] [org.clojure/clojurescript "1.10.597"] [reagent "0.10.0"] [org.clojure/core.async "1.0.567"] 2. I don't know if :main is needed in the root level, but it's definitively needed in figwheel config. Otherwise, it can't connect. :compiler { :main "helloworld.core" :output-to "resources/public/javascripts/dev.js" :output-dir "resources/public/javascripts/cljs-dev/"} 3. paths can't be relative. make it. 4. reagent.core/render is now deprecated. use reagent.dom/render instead. Now figwheel finally works fine :)
Really cool stuff! Perfectly paced and super informative. Also, who else's mind was blown when they high fived at 36:25 and you realized they're sitting in the same room?
I still really don't understand why people don't realize the power of data structures.All the MVC frameworks out there treat HTML as some sort of a string or just markup,but reagent address the fundamental problem by defining HTML as data structures because that's the essence of UI.You get the benefit of composition,map,filter out of the box.For me looking at html as data structures is a huge thing,there's treasure inside this approach. All the JS MVC frameworks you are missing this fundamental point. Pretty awesome stuff guys.
Thank you a lot for this video. It helped me a lot. It convinced me to stop using babel to compile js and go straight to lisp world for front-end stuff :)
+shipper66 The observation I made is that the following two sets of faux-code are conceptually very very similar. reagent.atom dereference put! EVENTCHANNEL {:someKey "someValue"} :update-active-item (fn ...) redux.Store react-redux.connect dispatch({type: "someType", someAction: "someValue"}) case "someType": { ... return newState } In each case, there is an external data source which reacts to messages from components, updates its state, and triggers an update of the components that subscribe
This is awesome. I don't like the node/npm ecosystem, have been learning Clojure over the past year and just dipping into ClojureScript now, but there's a load of really cool stuff here, and the ecosystem looks pretty awesome - especially the figwheel stuff. Will definitely be looking further into this, thanks!
Haven't checked this out yet, but I thought Id leave this here: A Clojure Development Environment package for the Atom editor atom.io/packages/proto-repl
It's not really true that ClojureScript doesn't work well with other libraries besides React. It's been used with JQuery, and many others quite well. Even David Nolan has talked about that in the past. Very misleading for potential users of ClojureScript. CLS can interop with any JS lib and does so extensively with Google's own Closure of which ClojureScript is built on.
+Jordan Leigh Also, don't take my feedback as not liking your video. Just wanted to point out that ClojureScript is usable for anything you'd do in JS.
"This is how future programs will be written; like you will be able to write universal programs like this in whatever language you want and then have it just port to host systems anywhere else." Don't know if I entirely agree with that. Seems a little much to say, borderlining livid. > 10 seconds later "Like if you've followed the Web Assembly projcet..." Oh yea okay it's livid-ness. "Google, Microsoft, and Mozilla" = "smart people" I mean...yea kinda but they still do stupid shit. Haven you seen Angular, the joke that is Go and Google+? Have you witnessed the shit storm that is Windows 10 and the support team for it? Have you heard about Mozilla starting to log what users do in Firefox? They aren't all absolute geniuses, they've just done a handful of smart things and fell on good money because of those handful of things. They still do dumb shit, like bother with insane and almost pointless project that is Web Assembly.