I'm mixed on vue because of the string bindings. I really like to know where my variables are coming from and really hate when two dependent uses but not actually the same thing...
That said, I'm happy to re-evaluate my stance... so what does it mean to be "the same thing"? I suppose in the past, I would say that the compiler thinks the things are the same, and it would be easy to change either:
1. If it is a value, I can set/change it in a single spot
2. If it's a token, it is easy to detect and change everywhere, and tooling will help my avoid misses.
That said, in React, if you were to mess up a 'token', the runtime would be very upset and it would be hard to have something like `onClick={incremant}` (note the a). Tools would make it super easy to spot.
What does vue do if you miss-type your bindings?
The same is of course true for Vue. At runtime, it will spit an error if it doesn't know that token (variable, function, whatever it is).
My feeling is what you don't like are really the quotation marks because it looks weird. I had a similar feeling when I started with vue. However, it is really a matter of taste if you prefer the Vue @click="foo" or onClick={foo} syntax.
Believe me, I agree to an extend its a matter of taste, but I too like that my underlying understanding of whats happening under the hood can be followed by a raw debugger without following string based mappings.
In react I can set a debugger endpoint right before the return of render and see what all my local variables are... is anything like this possible in vue?
Even with tooling support, those strings still make me wanting to look away...
I personally think this is a non-argument to begin with, but the new API coupled with the fact that Vue supports the render function and JSX would give you what you want.
Tooling also seems to deal with it just fine.
Standard HTML, onclick="var++"
`@click="isSomething = !isSomething"`