Overall Satisfaction with React
React, and its ecosystem of thirty-party modules, is the primary front-end library for our products at LiveTiles. It provides a dynamic HTML templating system, plus event and state-handling for our applications. This provides better reusability of code by making interfaces as modular components, plus provides an easy onboarding path for new front-end developers.
- Intuitive templating language (JSX) that provides a dynamic rendering of HTML elements, along with an easy model to tie back to JavaScript implemented in your components.
- Component-based views that guide the developer to modular and reusable pieces to your interface.
- Streamlined state management with immutable properties and mutable state within each component with one-day data-binding to tie them to the view
- When you hear someone say "React is a LIBRARY, not a FRAMEWORK", they're right. It's only the View layer of the application and nothing else. Some developers get this wrong, put too much application logic into their React components, then end up with no separation of concerns.
- It's so easy to get started that it's hard to realize when you're doing it wrong. Developers who are early into React can come up with issues like nesting the Props and State of their components wrong, leading to issues like re-rendering all of a list of items rather than just one item.
- It's so ubiquitous that there are certain developers I've met who have never done direct DOM manipulation. While it's easy to make something in React in most cases, developers need to make sure they know how to use the Js API as well as the convenient library.
- React sped up the time to implement new features, providing much better code-reuse across the team
- React's excellent performance made it so new components ran faster in the browser
- Since React is so popular, it's been easy to recruit new developers to the team who already have a familiarity with the library
Like most people, I started in serious client-side web development with the introduction of jQuery, the first robust library for cross-browser DOM manipulation. React provides a much closer WYSIWYG translation from the declarative JSX template to HTML elements compared to using procedural programming to do the same task. While it lacks the built-in capabilities like animation, it does have excellent third-party plugins for it - and most things can be accomplished via CSS nowadays.
React is one of many advanced client-side frameworks that are currently dominating front-end development. Angular and Vue would be the other noteworthy competitors.
Angular is comparatively heavy, but provides more of a "full toolbox" than React; however, its version changes and opinionated approach means it's a challenge to just bolt on to the project even if it likely would deliver some line-of-business (LOB) type solutions more rapidly.
Vue is React's real competition. It provides a loosely coupled set of libraries, a somewhat cleared format of separate component code, and support onboarding into a code base. Its community and developer familiarity are not as mature as React, so you'll have a harder time finding a Vue dev. Finally, Vue is independent (whereas React is supported by Facebook) -- that may influence some people.
React is one of many advanced client-side frameworks that are currently dominating front-end development. Angular and Vue would be the other noteworthy competitors.
Angular is comparatively heavy, but provides more of a "full toolbox" than React; however, its version changes and opinionated approach means it's a challenge to just bolt on to the project even if it likely would deliver some line-of-business (LOB) type solutions more rapidly.
Vue is React's real competition. It provides a loosely coupled set of libraries, a somewhat cleared format of separate component code, and support onboarding into a code base. Its community and developer familiarity are not as mature as React, so you'll have a harder time finding a Vue dev. Finally, Vue is independent (whereas React is supported by Facebook) -- that may influence some people.