I suspected as much but was always too timid to speak up when I observed how much noise and fury in the office produced so little UI.
I suspected as much but was always too timid to speak up when I observed how much noise and fury in the office produced so little UI.
There are only 2 APIs in the browser: DOM and the web APIs. As far as writing cohesive logic that does wonderful things that’s on you. Most JS developers would rather it not be on them and instead adopt an Invented Here Syndrome mentality. The fear of writing any original code is very real.
But when I see the mess that front end web dev have to deal with, yes I'm very skeptical !
I find the people that like most of the current tooling grew up with it, don't know any better and don't want to learn.
These aren't web-native so I don't think the comparison is particularly salient. Building on the web is a business requirement, all the tools are to make that requirement manageable.
You can do quite a fair bit with vanilla JS, HTML, and CSS.
Things get a little tricky when you start having to maintain a lot of state that multiple elements need to be aware of.
It's not impossible to do this with vanilla JS, but the mental model can be a bit difficult and this gets amplified across teams.
What crap.js frameworks do well is provide a contract for how state can be organized and how components should react/interact with the change in state. This scales well across teams as following a set of mutually agreed upon conventions produces more legible code instead of an entire team rolling their own code for everything.
For example, if you have a search application and you want to paginate results, you can get pretty far with vanilla js, but you have to evoke changes based on events which is hard to scale beyond one person rolling their own code.
This is a lot nicer with frameworks because you can be less explicit on which elements get updated and rather describe changes in state with elements "subscribing" to these state changes. Furthermore, these frameworks have conventions to follow that makes things consistent which is nice for teams.
I tend to use jQuery for things that require basic JS interactions, but when there are things that require very scoped JS state with a complex set of interactions, I will defer to Vue.js.