vue 和 react 区别

学习成本和开发体验

Vue:Vue 它的设计理念就是“渐进式”,意思就是你学一点用一点 甚至可以 cdn 引入到 html 中使用。而且由于其简洁的 API 和文档,学习曲线相对较平缓,但是受限于模板语法限制 灵活性不如 react。
React:反观 react 它更倾向于你上来就使用 cli 创建项目, 对于前端陌生的开发者有相当大的考验。而且React 的 JSX 语法将 HTML 和 JavaScript 混合在一起,虽然刚开始可能不太直观,可一旦习惯之后,它的灵活性和表达能力非常强大。

组件编写

Vue:Vue 的模板语法类似于 HTML,开发者可以像写 HTML 一样写模板,结合 Vue 的指令(v-bind, v-model 等)来实现动态绑定和交互。
React:React 使用 JSX,这是一种将 Js 和 HTML 混合的语法,看起来像是 HTML,但实际上它是 Js 代码。JSX 强调通过 Js 来控制 UI,开发者在编写组件时能够使用 Js 的所有功能,如循环、条件判断、函数调用等。

状态管理Vue

Vue 有内置的状态管理工具 Vuex,专门用来处理应用的全局状态,与 Vue 的响应式机制配合得很好。
React:React 没有官方全局状态管理工具,通常使用 Context API 或 Redux 等库来处理复杂的状态管理。

社区和市场份额

Vue:Vue 在国内开发者群体中比较受欢迎。Vue 的社区活跃度不断提升,许多大公司也开始使用 Vue 进行前端开发。 目前 star 大概 50k。
React:React 是目前全球最流行的前端库,许多大型互联网公司(如 Facebook、Instagram)都在使用 React。React 的市场份额较大,社区资源丰富,学习资料也非常多。 目前 star 大概 230k。

性能对比 (核心是虚拟 Dom的处理差异)

虚拟 Dom 更新范围和触发时机对比
Vue:Vue 通过 Object.defineProperty(Vue 2)或 Proxy(Vue 3)来追踪数据的变化。当数据发生变化时,Vue 能够精确知道哪些组件依赖了这些数据,并标记这些组件为“需要更新”。
React:当组件的状态(state)或属性(props)发生变化时(被 setState),React 会默认重新渲染整个组件(包括其子组件)。

总结就是响应式系统 vs 状态管理,Vue 的更细粒度的更新避免不必要的组件更新,React 更新机制更加简单和可预测。

虚拟 Dom的Diff 算法对比

特性 React Vue
核心思想 同级比较,递归子节点 同级比较,双端比较
Key 的作用 标识节点唯一性,优化节点复用 标识节点唯一性,优化节点复用
类型不同时的处理 直接替换整个节点及其子树 直接替换整个节点及其子树
优化策略 依赖 key 和递归比较 依赖 key 和双端比较
复杂度 O(n) O(n)

posted @   丁少华  阅读(7)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示