Sorry, but this argument just doesn’t jive in general and especially not with Vue.
Evan You, the creator of Vue, purposely left the “syntax”, the API and the other things you need to learn to work with Vue as slim as possible. One would say he shied purposely away from Angular’s very opinionated kind of framework cognitive bloat. Thus, Vue is easy and relatively fast to learn. Experienced devs have said they’ve learned Vue in a day. But, even for those who aren’t the greatest frontend devs, Vue is easy to learn too.
This is also why the PHP world, through Laravel, have picked up on Vue and are also loving it. Because, Vue actually adds the constraints which PHP devs have learned are absolutely necessary to make good, understandable, reusable and composable view code over the years. It’s a simple truth that too much logic in the HTML is a bad thing, because it can easily become unwieldy and allows for too many bad things to happen. That is why, despite PHP being a “templating language”, there have been a good number of templating engines built on top of PHP (Twig, Blade, Moustache, Smarty, etc.). Imagine that! Read this article from the lead dev of Symfony about his views on PHP and template engines. The premises for his views also fit React’s JSX and Vue almost to a tee.
the syntax is just plain ugly (as is JSX)
a template language is something that helps you to write templates that respects this separation of concerns (as does Vue)
A template language should find a good balance between giving enough features to ease implementing the presentation logic, and restricting the advanced features to avoid the business logic to cripple your templates. (as does Vue)
modern template languages have nice idioms to express common needs (as does Vue)
Someone noted in their presentation that “separation of concerns” with JS and HTML isn’t a true thing or rather, he said a separation of technologies isn’t a separation of concerns. I disagree. He put up this graphic
and I added to it, because it’s way too simple.
Vue helps the developer balance these things very well and keep the separation where it needs to be and as best as possible. That is what makes Vue so cool too!
On another note. Vue’s easy to understand, simple to start with, progressive and templated nature opens up Vue to a much larger developer audience. Vue’s pragmatism is winning over more and more developer hearts. People can and are “growing up” with Vue and reactive UI’s, because Vue can do simple stuff stupidly easy, so people can get the paradigm change of working “reactively” under their belt fast. And at the same time, Vue can also do very advanced stuff, even JSX, if needed.
I’m going to bet, Vue is going to have the ubiquitousness of jQuery one day, because of the much lower threshold to start with it and the excellent pragmatism it has, yet the ability to go full blown complex. Oh, and the docs are fantastic too.
Yes, there is a syntax, and actually, even more to learn, with Vue. However, all the working parts in Vue form smart and very flexible building blocks to build super good componentized reactive UIs. And because these blocks are there and everyone is using them, anyone can jump into a Vue built UI and understand what is happening relatively quickly. You cannot say that with complex built-with-React UIs, because of React’s “do anything you want in JS with HTML” ability. Oh, and throw in CSS into that and you can have a really nice mess. Anyone, doing anything, in anyway, in the view isn’t a recipe for good and more importantly understandable code. The separation of concerns is missing.
So yes, you’ll have some cognitive load to learn Vue at first. But later, when you are experienced with Vue, the cognitive load actually drops considerably, because Vue basically forces the developer to code more intuitively, because the code is based on the singular building blocks Vue offers. It sounds almost paradoxical, but that is actually the magic that Vue gives to developers and those who understand that then learn to love Vue a lot, like me. :-) So yes. I am biased too. Go figure!