React, unlike Angular, is not a framework, but rather a library. React is a JS library for building UI on web apps. It provides a declarative method of defining UI components, which as they claim:
Declarative views make your code more predictable and easier to debug.
They also enforce component-based architecture. An encapsulated component in React should manage its own state and multiple components can be combined in your quest to build your app's UI. Below is a handy chart that compares some features of React vs. Angular.
|DOM||Regular DOM||Virtual DOM|
|Debugging General||Good JS/Good HTML||Good JS/Bad HTML|
|Debug Line NO||No||Yes|
|Unclosed Tag Mentioned?||No||Yes|
|Templating||In TypeScript Files||In JSX Files|
|MVC||Yes||View Layer Only|
In September, the React team announced the release of React v16.0 (and as noted above, have since advanced further)! Some long requested features/changes made it into the v16.0 release, including improved server-side rendering, error boundaries, support for custom DOM attributes and fragments.
With the new return types for fragments and strings, you can now return an array of elements from a component's render method. Like with other arrays, you'll need to add a key to each element to avoid the key warning.
Editor's Note: This section has been updated to reflect the latest survey results from Stack Overflow.
On the Stack Overflow Annual Developer Survey for the past couple of years, React has scored incredibly high on the list of "most loved frameworks, libraries, and other technologies". For example, in the 2017 survey, it was ranked first (66.9%):
And in the 2018 survey, React ranked second overall (69.4%):
On npm trends, React is the most downloaded module, when compared to Ember, Angular, React, Vue, and Backbone:
￼Ember. What can you say about Ember? I used Google Trends to generate some data on the four top runner Frameworks and got this glorious chart below. Ember is that little green line that seems to be flatlining there at the bottom. From React, Angular, Vue, Ember, AngularJS on Google Trends:
Now that chart doesn't do a whole lot for me, other than showing Ember as a dead thing, which we all knew. Just kidding! Please don't send Tomster after me. So, I decided to turn it into a nifty pie chart (exported said data into Excel), that might help shed more light on the situation:
There really is no one way to know which frameworks are doing the best. This is just one peek into the enigma that is the web dev world. However, just going off of this pie chart, it still looks like Angular is on top, followed by React. Whereas Ember doesn't even get a piece, its dataset is THAT small. Other surveys (see earlier) don't show Ember doing too well either. This does not mean that developers are done using Ember, it just means that the survey-taking-type devs are not in love with Ember right now. That's the thing about surveys, they only shed light on the part of the demographic willing to take them.
Get a list of 31,099 websites using Ember which includes location information, hosting data, contact details, 15,116 currently live websites and 15,983 sites that used this technology previously.
31k sites. Not too shabby! Even if the framework is trending downward...
"One of the problems with Ember is that it targets a different type of developer, different from any other target demographic. It targets people who like Python, Rails or CoffeeScript. Ember is a different way of writing code. It's very structured, there's a way to do everything, everything is standardized — all things that are abnormal to JS devs. People like the freedom of JS, with Ember, you cannot break the rules." Zach NicollFront-end Web Developer
So, after interviewing him on his love of Ember, I understand a little more why it might be trending downward (at least on the scales we have to measure it today). I predict that Ember, like Angular, isn't going anywhere. Whether or not it's popular in 2018, I can't say, but it will still be one of the forerunner frameworks.
In March 2017, 3.2.1 was released with bug fixes like this fella:
Ensure we get proper values for width and height on elements with display "inline".
However, as a friend of mine likes to say "you might wanna take that with a bucket of salt", especially since jQuery has been around since the dawn of time. It would be very hard to imagine anything overthrowing that dynasty, anytime soon.
Alyssa is an Angular Developer Advocate & GDE. Her two degrees (Web Design & Development and Psychology) feed her speaking career. She has spoken at over 30 conferences internationally, specializing in motivational soft talks, enjoys gaming on Xbox and scuba diving in her spare time. Her DM is always open, come talk sometime.
Subscribe to be the first to get our expert-written articles and tutorials for developers!