But I read through, checked out the new (simpler) example, read Evan's arguments about logical task grouping, and on a second read with a more-open mind, I actually kind of like the new syntax and am now looking forward to trying it out.
I'm glad they agreed to keep the object syntax around though :)
Edit: After reading deeper it looks like the "lean" version of the library with full tree-shaking stuff is taking a backseat and they hope to provide some better library reduction in the future :/
That's a bit of a shame. I know it's a bit more work, but I wonder if they could have added in a switch where the compiler knows whether its object syntax vs function component syntax where the tree shaking is expected.
:).
A vue component is still as simple as {template: 'hi'}. You don't need webpack or any transliteration for it to work. Just drop the script tag like the good old jQuery and it's working! No wonder it has gained so much popularity as I don't think you can make it more KISS.
Transition from vue1 to vue2 was really simple. I just hope that when the dust settles and things are finalized, Vue remains true to it's core of keeping things simple.
That led me to create my own architecture to scaffold vue apps, which Evan You seems to hate.
https://github.com/vuejs/vue/issues/8106
In this comment, I showcased some production apps running with this:
https://github.com/vuejs/vue/issues/8106#issuecomment-386064...
https://github.com/vuejs/vue/pull/8807
I have improved this architecture even further in new apps, but I hadn't time yet to update the "vue-generator" boilerplate.
I started very, very simple. I ended up with multi-component files. No vue-cli. Three files. A few hundred lines of code.
Works fine. Never had to touch it again.
It's just an easier better way to enhance existing server rendered pages to include responsive elements without needing all the single page/routing stuff nor dealing with mass of jQuery binds and hand rolled data stores.
And best part is, Vue plays quite nicely with jQuery so can still use existing libraries and elements.
And Rivets.js seems to be defunct.
Will have to experiment a bit. Maybe it's possible to do something decent with some helper functions.
Why do you feel left out?
Generally it's relying strictly on type inference instead of interface declarations, which might make edit-time type safety work OK, but lack in error messages (spewing out complex inferred type definitions) and overall readability (much more easier to reason about an interface you wrote yourself).
Also, everything inside the setup function are just variables and functions, so your editor will colour/highlight everything the same, whereas in the class proposal, you have clearer separation between properties (props/data), getters (computeds), methods and even static methods. It's just less messy. Now, I get that classes don't work with React hooks, and the other reasons for dropping classes are rather sound, but I really think that whole setup "God" function is a massive eyesore. TypeScript isn't only about correct type inference, it's also about improved ergonomics, readability, and, pardon the pun, less typing (on a keyboard).
I guess I wrote too much again...
https://dev.to/stefandorresteijn/vuejs-is-dead-long-live-vue...
Very glad to see that both points turned out well. I was really not looking forward to trying to find/learning yet another JS framework.
In this instance, though, I do feel that the changes weren’t necessary. All API changes come with a cost, and I’m unconvinced that the benefits outweighed it this time round.
In many ways Vue is a spiritual descendant of KnockoutJS (except cleaner because the web platform had moved on) and those folks where amazing for compatibility relative to everyone else.
Changing everything ever version is definitely not what I want from Vue, there are plenty of frameworks already doing that and it's just tiresome after a while.
All in all it's a decision I'm pleased they made.