异
- React 是一个库,而 Vue 是一个框架
React 允许 DOM 操作、组件架构和状态管理;Vue 附带了许多语法糖、插件系统、内置指令、转换等 - 生命周期
react 生命周期:React 整体是函数式的思想,在 React 中是单向数据流
vue 生命周期:Vue 的思想是响应式的,也就是基于是数据可变的
-
重新渲染的机制:
React 提倡函数式编程。它实现了函数式编程原则,例如高阶函数、不变性、纯函数等。React 背后的理念是状态保持不变。当试图改变状态对象时,不会发生重新渲染。为了触发重新渲染,应该使用setState
方法。这不仅会更新根组件,还会重新渲染整个组件子树。可以使用PureComponent
或shouldComponentUpdate
生命周期hook来控制重新渲染过程。
在 Vue 中,状态在data
对象中表示。与 React 不同的是,状态对象的变化会触发重新渲染。在某些情况下,改变嵌套对象或数组可能不会触发重新渲染。在这种情况下,我们要么使用Vue.set
方法(类似于 React 中的setState
方法),要么使用Object.assign或 ES6 扩展运算符以不可变的方式进行更改。可以参考官方文档:深入响应式原理。
-
模板和样式
React 通过使用 JSX 实现的,JSX 是React.createElement
方法的抽象,用于创建虚拟 DOM 实体。语法类似于 HTML,但有一些显着差异。它提供了比createElement
方法更流畅的开发人员体验、调试和更好的代码可读性。你也可以在没有 JSX 的情况下使用 React。在样式方面,React 社区提出了不同的解决方案,例如 JSS 和 Styled 组件。
Vue 的模板看起来就像老式 HTML 的模板。事实上,每一个有效的 HTML 也是一个有效的 Vue 模板。在模板内部,框架提供了许多语法糖,如条件、迭代等。在样式方面,可以在样式标签中编写纯 CSS 或任何预处理器。 -
可扩展性
大多数 React 库只是已经增强现有库的简单组件。例如,React-Redux 库使用 Context API 并公开了一个高阶组件,专门用于做状态管理。
在 Vue 中,许多第三方库都是插件,并利用了内置的插件系统。通过Vue.use
方法添加插件。
同
- 使用虚拟 DOM
- 轻量级
- 提供了响应式和组件化的视图组件。
- 都有生命周期
- 拥有庞大的社区
- 大量可用的库和工具
- 将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库