The State of JavaScript Frameworks, 2017(npmjs.com) |
The State of JavaScript Frameworks, 2017(npmjs.com) |
React dominating, as expected. Vue growing, which is nice. Angular and Ember both seem to hanging in there but it's clear they aren't where the community is interested.
I think we all knew that, but it's nice to see numbers. Kind of sobering to see Angular and Ember are basically as popular as Backbone is tho. Of the two - Ember seems more healthy.
See https://npm-stat.com/charts.html?package=%40angular%2Fcore&p...
I'm working on a new project in angular and I'm very impressed with the built-in routing support. Also, I wasn't a big fan of using rxjs Observables everywhere at first, but they are now my favorite thing about writing javascript.
I'm really looking forward to taking advantage of the service worker support as well.
I can't help but feel like it's only useful as a low-level primitive that is still lacking a "full stack" framework on top. Even Create React App, which is an official project for this purpose, falls way short of what apps need in 2018.
Can you explain this? There's very little indirection (if any) in Redux.
Describing behavior as plain object actions _is_ a form of indirection, compared to code that directly applies a state update. It's a tradeoff. Use of plain object actions takes some more code, but opens up the power of middleware and time travel debugging.
Maybe you’re using it in a different context than I’m used to but I don’t see anything indirect about “call function that passes it’s result to another that updates the data”.
Sure it’s not “update state directly” but that would make every pattern “indirect” which makes little sense.
What you’re describing would make any MVP, pubsub, or observable system indirect. If so, well, fine - fair enough - but it still makes OPs complaint strange.
(Thanks for all your work btw)
For comparison:
state.counter += 1;
vs store.dispatch({type : "INCREMENT_COUNTER"});
// counter slice reducer
case "INCREMENT_COUNTER" : return state + 1;
That's indirection, because we're no longer going in and modifying the state right there. So yes, any function call that encapsulates or abstracts behavior would be a small form of indirection, and the act of describing the event or desired update as an action rather than directly implementing it is definitely a form of indirection.So, as before, sure - that's fine, but it makes the original criticism a bit... strange.