One thing I really like about Clojure is how the language has basically stayed the same, but I can use it on the heavy server-side stuffs like working with Hadoop, Spark, ElasticSearch to the front-end stuff like React, React Native, to CLR and now into nodejs, while staying sane [1] in the process. It feels like comparing a nice tropical island paradise to a crowded, hectic, mutating market, where everyone is competing for your attention and selling their newest wares.<p>[1] <a href="https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f" rel="nofollow">https://hackernoon.com/how-it-feels-to-learn-javascript-in-2...</a>
This is awesome. CLJS is amazingly close to having as good host-interop with JavaScript as plain Clojure does with Java.<p>Will be interesting to see how this impacts things like the React Native and Node.js service-side stories.
This is a nice step forward for developer experience. I struggled to get NPM and Clojurescript to play nicely. Ultimately, I had two different build systems at play in one project. (Three if you count Webpack.)<p>It'll be nice to have such an easy integration.
The thing I like about Clojurescript is the ability to escape the node/NPM ecosystem entirely. It's feature, not a bug, that I don't want to interoperate with node/NPM.
How does Clojurescript lookup for a module you declare?<p>For example, in <a href="https://github.com/omcljs/om/blob/c68e668a73cc534ecfdc71d6314abc3af911657e/src/main/om/core.cljs" rel="nofollow">https://github.com/omcljs/om/blob/c68e668a73cc534ecfdc71d631...</a> (couldn't think of any Clojurescript library), you have `[om.dom`, `[cljsjs.react`, `[goog.dom`. Where does the compiler look for these things? How does it knows one is a local module and the other an external package?<p>I need to know this so I can implement it in <a href="https://github.com/fiatjaf/module-linker" rel="nofollow">https://github.com/fiatjaf/module-linker</a>
This is a great step for ClojureScript. It's extremely difficult for a compile-to-JS language to bootstrap a large enough ecosystem to stand alone. A good interop story neatly sidesteps that issue.
I just want to thank the Clojure(Script) team for such an amazing work. It really is a joy to work in Clojure(Script) and improvements like this make it an even better tool to work with.<p>Keep up the good work!
Scary, any newbie will read this and run away.<p>Is passing through the complexity, pain and all the caveats one can encounter from this really worth it for using Clojurescript? Serious question, now that with have ES6+ and today babel/webpack are solid tools.<p>I mean from all the modules mess, I didn't get what's the correct way to do javascript interop right now.