模板:
Vue
Vue应用的默认选项是把markup放在HTML文件中。
数据绑定表达式采用的是和Angular相似的mustache语法,而指令(特殊的HTML属性)用来向模板添加功能。 React
它要求开发者借助JSX在JavaScript中的render()中创建DOM 渲染函数更加容易调试和测试,Javascript模板可以组织成具有很好的分解性和干(DRY)代码的组件,干代码的可重用性和可测试性更好
模板容易出现很难注意到的运行时错误,同时也很难去测试,重构和分解;
vue.0中vue也增加了渲染函数,但是React的渲染系统可配置性更强
数据状态:
React state是不可变(immutable)的,所以不能直接改变,需要使用API中的setState方法:
this.setState({
message: this.state.message.split('').reverse().join('')
}); Vue
数据是可变(mutated)的,所以同样的操作看起来更加简洁。
this.message = this.message.split('').reverse().join('');
Vue的响应系统还有有些坑的,例如:它不能检测属性的添加和删除和某些数组更改。这时候就要用到Vue API中的类似于React的set方法来解决。
数据渲染速度:
都是将虚拟DOM并同步到真实DOM中
Vue核心开发者提供了一个benchmark测试,可以看出Vue的渲染系统比React的更快,同时vue更轻量
跨平台
React
React Native是一个使用Javascript构建移动端原生应用程序(iOS,Android)的库。 它与React.js相同,只是不使用Web组件,而是使用原生组件。
Vue将HTML模板作为它设计的核心部分,并且现有特性不支持自定义渲染,因此很难看出目前的Vue.js的跨平台能力能像React和React Native一样强大。
总结:
ue的优势是:
- 模板和渲染函数的弹性选择
- 简单的语法和项目配置
- 更快的渲染速度和更小的体积
React的优势是:
- 更适合大型应用和更好的可测试性
- Web端和移动端原生APP通吃
- 更大的生态系统,更多的支持和好用的工具