I'm provably one the last people to test hot new frameworks. It isn't because I don't like to try new things. I really do. But I don't like things that are called frameworks. I know there are many reasons why frameworks are a good choice, sometimes, but usually I prefer to keep my solutions based on smaller components. They allow me to find the correct patterns for each scenario and keep the solution open for switching components in the future.
But reactjs isn't a framework and in my last big project I got tired of mixing jade templating with vanilla js and still not getting everything as nice as it could be (and jade is not my favourite template engine but thats another story).
So, very late in a one of our projects, we needed to implement a new part and we started using react. I wont go into details, since there are so many good introductions and descriptions about react already, but I will give you the top 4 reasons I liked:
- Components. As soon as you think components, you think reusability. You also think smaller. React makes it natural to break your frontend intro much smaller parts. It makes it easier to reuse but provably even more important: It makes it easier to have a better structure. This might be true for many options, even for frameworks, but in this case, react just makes it easier to think about breaking down stuff into smaller parts.
- The npm approach. You build your solution based on small parts. No huge system dictating how EVERYTHING should be setup. Just small modules (again, components) that build up your solution.
- React handles rendering. So it isn't a framework. And it handles rendering very well.
- Render service-side as well. This is actually extremely important. Usually when you choose a frontend component/framework/system you need to come up with some kind of trick to render the page on the server for faster loading and SEO. Or you choose parts that are rendered in the browser. With react, it's just a matter of a good setup and you have both frontend and backend render. Amazing.
I'm looking forward to create a solution where react is part of the original architecture, but until then, inserting it here and there in a big project has worked pretty well.