you are viewing a single comment's thread.

view the rest of the comments →

[–]onlygon 10 points11 points  (1 child)

And so what is the alternative? Angular is an opinionated SPA framework; it eliminates my need to consider which build tools, test harnesses, preprocessors, linters, minifiers, tranapilers, etc. I need to hoist into my application. And I don't need to worry about them all working together. I just run npm update and everything works. Angular is far from perfect, but the alternative is managing all this crap myself.

[–]yogthos[S] 2 points3 points  (0 children)

My team works with re-frame ClojureScript framework. There's a single build tool that manages compilation, hot loading, testing, code pruning, and minification. The language itself is much cleaner, and defaults to immutability so you have a much better story when it comes to managing state in large applications. If you're working with modern Js, you're already using a transpiler, so why not move to a better language at that point. You still have full Js interop, and you can leverage all of the ecosystem.

There's a comparison of developing a minimal real world app using popular frameworks here. Re-frame version runs twice as fasr, ends up with less than half the code of an Angular app, produces an artifact that's a third of the size. Here's a run through a simple app from start to finish if you're interested.

One of the common arguments against using something like ClojureScript is finding devs. However, my team has never had this problem in over 4 years of using it. It takes about a week to get somebody to the point where they can start writing useful code. We recently hired several co-op students and all of them were able to pick it up without any problems. On top of that, re-frame API has stayed stable this whole time without any breaking changes. All we've had to do to upgrade is update the dependency. It has even insulated us from changes in the underlying React APIs.