> I hate the lack of conventions — every project I look at looks different, every blog post looks different.
React is just a library to build views, so there is not a single way to build your app in the React world. You can use Redux, MobX, Flux or whatever you want to manage your data. You can even do it in 100% raw vanilla JS. I think it's great.
JSX can also be a hard sell for seasoned developers because they've been taught to avoid combining HTML and JS for so long. I initially disliked the Angular templating system because it felt like I was regressing to `on-click="javascript()` code.
While I prefer JSX now, mainly because it is just html/javascript, I sometimes feel that inline conditions/loops like `ng-if` are cleaner - I don't need yet another several lines of a `var` definition, condition, and assignment.
My biggest struggle with React was due to the fact it's a view-only library. Coming from Angular or similar projects you're suddenly in the dark on how best to manage ajax, forms, etc - yet when you power through, you realize it's actually freedom to do whatever you want. Done correctly, that's way more powerful.
You definitely have to learn a DSL - in JSX you have to use className instead of class for the HTML tag property. There are a few other examples of this, but the point is the argument doesn't hold water against Angular's templating language.
Learning a few differences for attributes names isn't nearly as involved as learning angular's entire custom attribute and syntax support though.
I would also add that for any web app truly utilizing these libraries, you're going to have to know how they get compiled and where your data is coming from. With Angular you have to learn about scopes, digesting, linking/compiling, etc.
Two-way binding was amazing to me when I first took up Angular, it made common tasks so easy but on an enterprise-level application it's a nightmare because you're quickly dealing with digest/event cycle issues, especially during automated testing. The control over data flow that React prefers makes the easy, common tasks more time consuming, but overall saves a massive amount of complexity.
> I hate html in javascript. I hate JSX.
At least it's just HTML and JavaScript.
In my opinion it's better than learning a new messy templating DSL, i.e.
> I hate the lack of CLI. I hate the ridiculous amount of shit I have to do to simply get a project started.You can use the official Create React App CLI [1].
> I hate the sheer amount of boilerplate code and the verbosity.
How do you recreate the following component in Ember/Angular/Backbone/jQuery/FoobarJs with less boilerplate and verbosity?
> I hate the lack of conventions — every project I look at looks different, every blog post looks different.React is just a library to build views, so there is not a single way to build your app in the React world. You can use Redux, MobX, Flux or whatever you want to manage your data. You can even do it in 100% raw vanilla JS. I think it's great.
---
[1] https://github.com/facebookincubator/create-react-app