This feature appeared in React v16 (which is still in beta). Vue had it long before.
https://ssr.vuejs.org/en/streaming.html
Thanks for pointing out that it has it.
https://www.nativescript.org/blog/a-new-vue-for-nativescript
of all the frameworks, vuejs has the simplest syntax to learn. its no where as complex as angular and way more elegant. also beats jsx in terms of making your code more cleaner and prettier. im never going back to jsx.
<button v-bind:disabled="isButtonDisabled">Button</button>
<div v-bind:id="'list-' + id"></div>
<form v-on:submit.prevent="onSubmit"></form>
<a @click="doSomething"></a>
There are some redeeming qualities compared to say, Polymer. But it's neither clean nor pretty <button :disabled="isButtonDisabled">Button</button>
<div :id="'list-' + id"></div>
<form @submit.prevent="onSubmit"></form>
<a @click="doSomething"></a> button(:disabled='isButtonDisabled') Button
div(:id='`list-${id}`")
form(@submit.prevent='onSubmit')
a(@click='doSomething')JSX is incredibly simple. Why would you do that to yourself and other devs?
And it's far from being simpler
@click="say_something('hello')"
new Vue({ methods: { say_something (str) { ... } } })
2) : is just a shorthand for v-bind (ie; v-bind:disabled="is_disabled()" is aliased by :disabled="is_disabled()"). and this basically allows you to run pure javascript code inside of it.
3) the only other syntax to know is, v-for and v-if, but thats pretty self explanatory i believe.
<h3 v-if="user.name">{{name}}</h3>
<h3 v-if="!user.name">What is your name?</h3>
<h3 v-if="user.role == 'admin" && user.name == 'james'>hello super user {{name}}</h3>
i like this approach more than JSX where you have several if else clauses mixed into your HTML. it's kind of like pattern matching if you like that sort of thing.
or you can simply do <h3>{{some_message()}}</h3> and just handle the logic inside the some_message() method.
2) shorter to write and simpler to read
2) Shorter is not always easier. For example, using quotes to delimit logical expressions makes it easy to make errors. See the misplaced quote here?
<h3 v-if="user.role == 'admin" && user.name == 'james'>hello super user {{name}}</h3>That's the thing. You do not really separate js and HTML.
There's a weird extension to HTML. There-are JS-like expressions, JS expressions and bindings to outside JS code
It's also neither shoryer to write nor easier to read.
Not sure about the original poster, but I prefer react/jsx not because it's simpler, but it's more powerful - it's a simple extension to a full programming language. You can do whatever you want with it.
it's just less coding and boilerplate if anything.
vue also optimizes your reactive codes and is faster in many cases. react can get pretty slow and heavy if you don't know what you are doing and trying to debug those situations can get pretty hairy. otoh, i've not seen any similar issues with vue. what vue does with the bindings is really neat.
- React Native (I know there's Weex but it's not production ready, nor as feature rich)
- Streaming server side rendering
- React Relay (GraphQL integration)
- JSX by default. VueJS pushes an Angular-esque template language where I have to learn new syntax, binding concepts, directives and conditional statements.
- Corporate backing
I've used React in very large projects, where these features have been fairly critical. React's licensing is odd but not odd enough for me to ditch it. I'd really hate to see the community churn once again on frontend libraries, but that's JavaScript for you I guess.