React Vs Vue
React Vs Vue
首先声明,只单纯的花了几周把2个框架的官方文档看了遍和Demo写了下,纯粹个人意见;如果熟悉了任何一个框架,完全没必要去学习另外一个,因为2个都很优秀。
如果你不想用组件式开发,选React
<div id="app">
</div>
<script>
var app = new Vue({
el:'#app',
data:{
message:'Test'
}
});
</script>
如果你想用模版开发,选Vue (JSX Vs 模版)
<template>
<div> </div>
</template>
<script>
export default {
name: "MyFristCompent",
data:{
date:new Date(),
}
}
</script>
<style scoped>
div{
background-color: red;
}
</style>
Vue:提供了模版的方式,将Html,CSS和Script分离,看起来比较的舒服。 重点:Css样式可以当前组件生效,这个还是比较重要的一个功能。
class Clock extends React.Component {
constructor(props) {
super(props);
this.state = {date: new Date()};
}
render() {
return (
<div>
<h1>Hello, world!</h1>
<h2>It is {this.state.date.toLocaleTimeString()}.</h2>
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
如果你对JSX很熟,那么选React挺好的 React也支持外联内联样式,在React里面,有些Css样式用JSX写,key值是不一样的,很难受。 整个React组件看起来比较混乱(相比Vue)
如果你喜欢简单,选Vue
React里的状态(state)是不可变(immutable)的,因此你不能直接地改变它,而是要用setState API方法:
this.setState({
message: this.state.message.split('').reverse().join('')
});
其实这个还有一个坑,setState是异步的,不能作为组件的一个属性来存储数据,如果你要setState后立即需要用的message属性,我劝你再写一份属性。
相对React Vue就比较简单:
this.message = this.message.split('').reverse().join('');
更加厉害的是,Vue中改变状态的操作不仅更加简洁,而且它的重新渲染系统实际上比React的更快更高效。 当然,Vue里面还有更多高级语法,在我看来,作者参考了很多现代语言,比如拦截器,计算属性等等
如果你有类似Tab/Navigation,而不想重新渲染,选Vue
vue路由官方支持Keep-alive react路由暂时不支持,需要有第3方的状态管理/或者其他路由来代替。
如果你要构建适配原生App的框架,选React
React Native是一个用于通过Javascript构建移动端原生应用程序的库。 它与React.js相同,只是不使用Web组件,而是使用原生组件。 如果你学过React.js,很快就能上手React Native,反之亦然。
如果你想要最大的生态圈,选React
老牌框架,生态比较成熟
如果你构建管理大型应用,选React
对于管理大型应用中的状态这一话题而言,Vue.js的作者尤雨溪曾说过,(Vue的)解决方案适用于小型应用,但对于对于大型应用而言不太适合
但是2个框架都提供了,Redux或Vuex状态管理
最后再看下Github的情况
React:12.6W🌟 Issues:close 6840;剩余465
Vue:13.5W🌟 Issues:close 7671;剩余187