文章目录
- 1、条件判断、列表渲染等
- vue
- react
- 2、表单
- vue
- react
- 3、数据流
- vue
- react
- 4、虚拟dom
- vue
- react
- 5、模板和JSX
- vue
- react
- 6、用法
- react
- vue
- 7、生态
- react
- vue
- 8、slot
- react
- vue
- 9、setState与vue赋值
- react
- vue
- 总结
1、条件判断、列表渲染等
vue
有v-if、v-for等vue指令
react
完全是js控制,只不过用了jsx
2、表单
vue
v-model双向绑定,其实是oninput的一个语法糖
react
完全js控制,用onChange实现双向绑定,但是react叫受控组件,也就是input的文字是受一个变量控制的
3、数据流
vue
数据双向绑定
react
单向数据流(数据变化必须通过setState)
4、虚拟dom
vue
可以更快地计算出Virtual DOM的差异,这是由于它在渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。
react
每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过shouldComponentUpdate这个生命周期方法来进行控制,但Vue将此视为默认的优化。
5、模板和JSX
vue
Vue依赖于模板语法
react
react用jsx
6、用法
react
更接近js原生
vue
更偏配置,但是这是对新手来说,其实了解背后的原理了,都是挺好的
7、生态
react
react比较杂乱,或者说更灵活
vue
基本就固定一套
8、slot
react
react如何实现类似slot?子组件通过this.props.children
占一个位置,父组件调用子组件时在子组件中间写上传入
// 父组件
<Child>你好</Child>
// 子组件
<div>
{this.props.children}
</div>
vue
vue中我觉得slot和高阶组件差不多,也是传入一个组件,返回一个新的组件
9、setState与vue赋值
react
通过 this.setState
来赋值,异步的时候可以加回调函数,有点像 vue 的 this.$nextTick
vue
通过 this.key = value
来直接赋值
总结
网上有些人总说大型项目要用 react,中小型用 vue?
其实用 Vue 和 React 都没啥问题。
真的到了大型的应用,问题就不在于是用 Vue 还是 React 了,而在于项目的设计、架构、以及项目管理和监督。例如是否保证严格的代码审查,是否保证每次开发时设计的可扩展性,等等。
Vue 和 React 的差别,就是两种对于前端框架的理解方式不同。一个认为应该用 template 加指令的形式,把模板和 js 代码分离,给用户定好规则(如 data watch computed 等)。另一个认为应该用 jsx 的形式,把模板作为 js 代码的一部分,剩下的用户自己去搞定。仅仅如此