Someday, if anyone says "These frameworks aren't enough to solve the xxx problem" new frameworks appears.
Does anyone agree with me?
Maybe my thoughts can be ridiculous. I can accept all punches :)
Thanks for the article. Really good. I added my reading list.
Agreed. Innovation is ahead of the curve in front-end land. I'd be looking at React Native and competitors that bridge front-end with web and non-web platforms for the next big thing.
Thanks a lot for your feedback. I am glad you liked the article
In regards to Angular, you wrote, "Supports two-way data binding which greatly minimizes the risk of errors."
Two way data binding can actually cause more errors and can also make it a lot more difficult to understand how the data flows through.
This is one of the reasons why React implemented one way data binding and other frameworks like Vue followed suit. See vuejs.org/v2/guide/components-prop... and reactjs.org/docs/thinking-in-react...
Maybe i didn't pen my thoughts concerning 2-way data-binding more clearly. What i meant was that 2-way data binding offers an incredibly high degree of assurance that the model and the controller are in sync, because during every cycle, they are checked against each other. 2-way data binding is still practical in small applications where absolute consistency between the view and model is critical. However this has an obvious downside that it is much more complex and quite slow compared to one way data binding. One-way Data Binding is expectedly much faster, much simpler and easier to comprehend but also has less assurance that the view and model are the same. Things might not change in the model and wrong data may continue to exist. But Speed, performance and simplicity are the dominant factors which is why all modern frameworks that came after angular like React and Vue dumped 2WDB for this very reason. But for some applications 2wDB is still practical that's why it wasn't completely deprecated in angular 2.
Two-way data binding is just a shorthand for the double one-way data binding you do in React.
In React you need to manage the synchronization yourself. A framework can do this properly for you (I'll name Aurelia since that's what I use and work on) without sacrificing on control or flexibility.
A framework supporting two-way binding out of the box will typically have a more robust mechanism than the variant you'll write by hand, which everyone might do a little differently.
I would therefore say that two-way data binding does indeed minimize the risk of errors, granted it is done well. It also reduces boilerplate (resulting in a smaller and easier to maintain app) and tends to improve performance (Aurelia outperforms React by over a factor of 3 in binding/observation, although that has more to do with the use of observers instead of a VDOM)
According to npm, ember has been getting more usage since early 2017
As per Google Trends data for US, search queries for ember dropped from a score of 70-80 in jan 2017 to just 40-50 in Jan 2019. Data for Worldwide shows a even steeper fall.
Oh I'm aware. But, you see there is a problem with both of those techniques of data collection. They are required to have the groups of people manually do things.... Whether it be fill out a survey, or search something on Google... It requires human interaction, and therefore cannot be a reliable source for capturing 'the full, complete picture'.
Npm stats are totally automatic and would be more representative of actual usage, as npm is the central source for where people get their dependencies.
With that said, here is a screenshot of part of the npm report: twitter.com/nullvoxpopuli/status/1...
Ember may have seen a rise in number of users as you indicated but that doesn't necessarily equate to higher % share. All other top frameworks are also growing their user base(some at a faster rate). That's why the statistics used for the article is based on % share. Other frameworks like React, Vue, Angular and Preact! are growing at a decent rate.
On NPM, Ember is clocking 113,764(ember-cli) weekly downloads and its graph has stagnated a little - npmjs.com/package/ember-cli
Compare this with weekly downloads of React(5,335,501) and Vue(767,907) both registering an upward graph. npmjs.com/package/react npmjs.com/package/vue
Also the report had Preact framework at rank 4. I disn't include it on purpose because it is too similar to react(almost a flavor of react) and i wanted to keep the list a little more diverse. But you can get a pretty good idea how accurate StateOfJS survey is by checking out Preact NPM package weekly downloads - 107,147.
But as you rightly said StateofJs survey can only reflect a broad trend not absolute numbers.
that is the wrong ember package.
this is what you want:
user-sourced data is flawed, even though it's accurate when you squint at it, it's still flawed.
Not arguing about the correctness of anything aside from the ember stats, because npm shows the exact opposite of the StateOfJS survey, which means that people using ember don't typically take JS surveys.
Thanks for the heads up, i corrected the ember package. I was wondering if you can quote any source that indicates ember is increasing its user share(not user base...all rival frameworks are doing it)? I based the ranking on couple of articles one of which was - medium.com/@vlascik/honest-look-at... This was written in 2018 may. Stats have changed but not the momentum imo. Is ember growing at the same pace as other top 3 frameworks or new competition like preact.
ember-cli-babel (used in ember apps and addons):
they are all much closer than the StateOfJS says.
React obvs the most popular still, cause it's what's being taught at bootcamps, and it's gotten to the point where non-tech people know about it, but this just goes to show how different imperfect surveys are with automatic data collection from stats from the single source of truth (the npm registry)
I think the better source to quote is Laurie Voss, CTO of npm, giving a speech at JSConf US specifically saying that Ember is having a resurgence 😂
Here is the link: youtu.be/mSQh0gcDXkc?t=1237
I included the time in the link but I would highly recommend watching the whole video 🎉
Yeah i watched the video after Preston mentioned it in his comments. Looks like NPM stats and StateOfJs are saying the opposite. That might probably change when 2019 results are out. But i do concede, NPM stats are undoubtedly a reliable source. By the end of 2019 it would be clear if Ember can sustain the newfound growth or not. The more i researched on this after discussion with Preston i keep getting contradictory analysis. But ember showing resurgence in early 2018 looks indelible. I should tweak the article to mention that fact.
I would be quite careful using the State Of JS as a source just in general. It's not very representative and if you want a better discussion about that I would recommend that you listen to this Podcast: changelog.com/jsparty/54 where they do a better job than I ever could explaining the issues 👍
As a JS Developer who knew only basic JS before Vue, I can say that Vue, despite it's small size, relative to other frameworks, offer good support and very high quality documentation, unlike React. I believe the point about Vue having bad support be replaced with something like Small Ecosystem. Otherwise, the article is fairly accurate.
Like you said, support for Vue is not bad by any definition. But Vue is comparatively younger than its 2 dominant peers - Angular and React. Vue started finding traction from 2017 fall, throughout 2018 and shows no signs of stopping in 2019. But compared to React and Angular, resources for Vue are still a little scarce and its community is still maturing. As far as React is concerned, its documentation used to be a nightmare couple of years ago, but has improved quite a lot in recent years. Thank you for your feedback. I am glad you liked the article.
Forgot cypress :)
I could only cover 3 testing frameworks :). But i agree with what you said Cypress looks quite promising and is ideal for testing literally anything that runs on a browser. Direct comparison with Jest and Mocha wouldn't be fair though. Cypress is much broader end to end testing framework. It might one day break Jest Mocha enzyme triopoly.
Bigtestjs is really good, too. Esp if you want acceptance and unit tests
I'll have to look into it, thanks for sharing. I just found out recently that there are plugins for unit testing for cypress.
I think one of the major selling points for Meteor.js was overlooked - Meteor's out of the box data flow between the client and server is done real-time through WebSockets. This comes without any of the usual clunky setup that you normally need to go through when writing real-time APIs.
This makes Meteor is a solid choice for rapidly developing apps that heavily rely on real-time data updates.
Having tried several different solutions for developing real-time applications. (Plain Socket.io and Redis, Laravel Echo, Feathers.js, Wolkenkit) Meteor really stands out for its excellent development experience and fast development cycle.
However, one of Meteor's major benefits may also end up being one of its biggest downsides; Having Meteor do everything for you makes it a not-so-flexible solution.
for some reason Google decided that this crap is worth reading. i am on moboli so I won't bother to search for stats, but man you have no clue....
what is this supposed to mean? it is top because it is considered? by a heavy volume?
Knowledge of MVC
Knowledge of MVC
is a drawback of angular? lmao
learn to code
"Knowledge of MVC - is a drawback of angular? learn to code"
Extensive knowledge of MVC architecture has nothing to do with ability to code. You need to work on some other framework like Vue to understand the difference between the 2 and why so many devs are dumping angular and migrating to Vue and React. One of the reasons why Angular is way more complex and difficult to learn than Vue is because it forces you to write the complete M-V-C layer for front end Too much modularity leads to a lot of moving parts of code. VueJS wraps the controller part internally (you don't need to write it yourself). You can just focuses on View part only. All you need is 1 component class for an entity that stores its data and you can write methods on that. Vue has a fractional code footprint than angular to achieve the same task.
"what is this supposed to mean? it is top because it is considered? by a heavy volume?"
I checked similartech stats. 350k-500k websites are currently using Angular. A figure only matched by React. One of the biggest criticisms of Vue is that its community is still small and as a result resources are milited compared to angular. One of the reason Meteor which used to be my favourite before i moved to Vue could never find popularity and is slowly dying out is because it doesn't have a significant community behind it. But angular has been around for 10 damn years and has been widely adopted worldwide and is still leading React in Europe, Russia India etc. Maybe you aren't aware but Angular is leading in Top 10K Sites, Top 100K Sites and Top 1M Sites as per similartech stats that this guy mentioned in the article.
Your comment hardly makes any sense lol
Really great article! You have got a follower :)
Where did you get the usage chart screenshot for each framework? Could you share the link?
The stats chart is from StateOfJs 2018 survey. Website - 2018.stateofjs.com/introduction/
You can get the statistics for JS flavors, front-end, backend, testing frameworks etc. Front end framework stats - 2018.stateofjs.com/front-end-frame...
We're a place where coders share, stay up-to-date and grow their careers.
We strive for transparency and don't collect excess data.