(Vue)谈谈对 React 和 Vue的理解以及它们的异同

React 的特点:

  1. JSX: React 使用 JSX 语法,将HTML写在JavaScript代码中,使得组件的结构和逻辑更紧密地结合在一起。
  2. 灵活性: React 提供了更多的灵活性,但相对需要更多的配置和决策。它更像是一个库而不是一个完整的框架。
  3. 社区和生态系统: React 有一个庞大而活跃的社区,丰富的第三方库和工具,以及许多支持React的工具和平台。

Vue 的特点:

  1. 模板语法: Vue 使用模板语法,将HTML写在字符串模板中,更接近传统的HTML和JavaScript分离的方式。
  2. 易用性: Vue 被认为更容易上手,相对于React而言,Vue提供了更多的默认行为,减少了一些配置的需求。
  3. 渐进式框架: Vue 被设计为渐进式框架,可以逐步应用到项目中,也可以整体引入。这使得Vue在现有项目中的集成更为容易。
  4. 单文件组件: Vue 支持单文件组件,将模板、样式和逻辑封装在一个文件中,使得组件更加整洁。

异同比较:

相同之处

  • 都将注意力集中保持在核心库,而将其他功能如路由和全局状态管理交给相关的库

  • 都有自己的构建工具,能让你得到一个根据最佳实践设置的项目模板

  • 都使用了 Virtual DOM(虚拟 DOM)提高重绘性能

  • 都有 props 的概念,允许组件间的数据传递

  • 都鼓励组件化应用,将应用分拆成一个个功能明确的模块,提高复用性。

不同之处

比较点 Vue React
数据流 默认支持双向绑定 一直提倡单向数据流
虚拟DOM Vue2.x引入虚拟DOM,可以更快的计算出虚拟DOM的差异,渲染过程中会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。 每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过 PureComponent/shouldComponentUpdate 这个生命周期方法来进行控制,但 Vue 将此视为默认的优化。
组件化 鼓励写近似常规 HTML 的模板。写起来很接近标准 HTML 元素,只是多了一些属性。 推荐你所有的模板通用 JavaScript 的语法扩展------JSX 书写
监听数据变化的实现原理 通过 getter/setter 以及一些函数的劫持,能精确知道数据变化,不需要特别的优化就能达到很好的性能 默 认 是 通 过 比 较 引 用 的 方 式 进 行 的 , 如 果 不 优化(PureComponent/shouldComponentUpdate)可能导致大量不必要的vDOM 的重新渲染。这是因为 Vue 使用的是可变数据,而 React 更强调数据的不可变。
高阶组件 需要通过 mixins 来扩展 可以通过高阶组件(HOC)来扩展
构建工具 vue-cli Create React APP
跨平台 Weex React Native
  1. 设计理念:

    • React 更加注重灵活性和可组合性,适用于大型、复杂的项目。
    • Vue 更加注重开发者友好性和逐步增量,适用于小型、中型项目。
  2. 数据绑定:

    • React 使用单向数据流,通过 props 进行数据传递。
    • Vue 使用响应式数据绑定,数据发生变化时视图会自动更新。
  3. 模板语法:

    • React 使用 JSX,将HTML直接嵌入JavaScript代码中。
    • Vue 使用模板语法,通过指令来处理DOM操作。
  4. 学习曲线:

    • React 学习曲线较陡峭,特别是对于理解虚拟DOM和JSX的新手。
    • Vue 学习曲线较为平缓,文档清晰,适合初学者。
  5. 生态系统:

    • React 生态系统庞大,有大量的第三方库和工具支持。
    • Vue 生态系统相对较小,但也在不断发展壮大。

总体而言,选择使用 React 还是 Vue 取决于个人或团队的偏好、项目需求以及开发经验。两者都有强大的功能和庞大的社区支持,因此可以根据具体情况来做出选择。

对上面一些概念的补充

高阶组件

高阶组件就是高阶函数,而 React 的组件本身就是纯粹的函数,所以高阶函数对 React 来说易如反掌。相反 Vue.js 使用 HTML 模板创建视图组件,这时模板无法有效的编译,因此 Vue 不能采用 HOC 来实现。

最大的不同-模板编写(组件化)

React 中 render 函数是支持闭包特性的,所以 import 的组件在 render 中可以直接调用。但是在 Vue 中,由于模板中使用的数据都必须挂在 this 上进行一次中转,所以 import一个组件完了之后,还需要在 components 中再声明下

相关推荐
子兮曰21 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰21 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A1 天前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋1 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
晨米酱1 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
卡布鲁1 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
honkun61 天前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
彧azz1 天前
Linux 环境下 Redis 学习总结:数据类型、持久化、锁、事务、主从与缓存问题
linux·redis·笔记·学习·面试