React
相似点
- 使用了虚拟dom
- 提供了响应式和组件化视图组件
- 分为核心库和其他库(如路由和状态管理)
不同点
- 运行时性能
在react中,组件状态发生改变,会以该组件为根,重新渲染整个组件子树
避免发生不必要子组件被重新渲染,要么使用PureComponent或者手动实现shouldComponentUpdate,并且可能用到不可变的数据结构
使用PureComponent或者shouldComponentUpdate,必须保证该组件的整个子树渲染输出由props决定,不符合该条件会导致渲染结果可能不一致
而在vue中,组件的依赖在渲染过程中自动跟踪,默认自动获得shouldComponentUpdate,没有子树问题限制
HTML&CSS
在react中,一切皆JavaScript,不仅HTML用JSX来表达,CSS也被纳入JavaScript中,Vue是拥抱经典web技术,并进行扩展JSX vs Templates
在react中,组件渲染依赖与JSX,JSX是使用XML语法编写的欧中语法糖,而JSX渲染函数,有以下优点
(1)可以用完成的JavaScript功能构建试图页面
(2)开发工具对JSX支持比现有的vue模板先进
在vue中,其实也提供了渲染函数以及支持JSX,但是还是默认推荐模板,任何合乎HTML的都是vue模板
(1)模板比JSX读起来自然,能提升传统HTML开发者的效率
(2)基于HTML的模板易于迁移vue
(3)设计师和新人开发容易理解和参与到项目
(4)可以使用其他模板预处理器,如Pug书写vue
(5)组件第一种为偏视图,推荐使用模板;第二种为偏逻辑,推荐使用JSX或者渲染函数,而表现类的组件多于偏逻辑组件作用域内的CSS
在react中,CSS作用域通过CSS-in-JS的方案实现,但在 JavaScript 灵活处理样式的同时,也需要权衡 bundle 的尺寸和运行时的开销
而vue设置样式的默认方法是单文件组件里类似style的标签,单文件组件可以在同一个文件里完全控制CSS,将其作为组建的一部分
在一个,vue单文件的样式设置是非常灵活的,通过vue-loader,可以使用任意预处理器,后处理器,甚至深度集成都在