常见前端面试之VUE面试题汇总四

11. 对 React 和 Vue 的理解,它们的异同

相似之处:

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

都有自己的构建工具,能让你得到一个根据最佳实践设置的项目模板;都使用了 Virtual DOM(虚拟 DOM)提高重绘性能;

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

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

不同之处 :

1)数据流

Vue 默认支持数据双向绑定,而 React 一直提倡单向数据流

2)虚拟 DOM

Vue2.x 开始引入"Virtual DOM",消除了和 React 在这方面的差异,但是在具体的细节还是有各自的特点。Vue 宣称可以更快地计算出 Virtual DOM 的差异,这是由于它在渲染 过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。

扫描二维码关注公众号,回复: 16329642 查看本文章

对于 React 而言,每当应用的状态被改变时,全部子组件都会重新渲 染。当然,这可以通过 PureComponent/shouldComponentUpdate 这 个生命周期方法来进行控制,但 Vue 将此视为默认的优化。

3)组件化

React 与 Vue 最大的不同是模板的编写。

Vue 鼓励写近似常规 HTML 的模板。写起来很接近标准 HTML 元素,只 是多了一些属性。

React 推荐你所有的模板通用 JavaScript 的语法扩展——JSX 书写。

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

4)监听数据变化的实现原理不同

Vue 通过 getter/setter 以及一些函数的劫持,能精确知道数据变 化,不需要特别的优化就能达到很好的性能

React 默 认 是 通 过 比 较 引 用 的 方 式 进 行 的 , 如 果 不 优 化(PureComponent/shouldComponentUpdate)可能导致大量不必要的 vDOM 的重新渲染。这是因为 Vue 使用的是可变数据,而 React 更强 调数据的不可变。

5)高阶组件

react 可以通过高阶组件(HOC)来扩展,而 Vue 需要通过 mixins 来 扩展。

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

6)构建工具

两者都有自己的构建工具:

React ==> Create React APP

Vue ==> vue-cli

7)跨平台

React ==> React Native

Vue ==> Weex

12. Vue 的优点

轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有 几十 kb ;

简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学 习;

双向数据绑定:保留了 angular 的特点,在数据操作方面更为简单;组件化:保留了 react 的优点,实现了 html 的封装和重用,在构 建单页面应用方面有着独特的优势;

视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代 码的修改,只需要操作数据就能完成相关操作;

虚拟 DOM:dom 操作是非常耗费性能的,不再使用原生的 dom 操作 节点,极大解放 dom 操作,但具体操作的还是 dom 不过是换了另一 种方式;

运行速度更快:相比较于 react 而言,同样是操作虚拟 dom,就性 能而言, vue 存在很大的优势。

猜你喜欢

转载自blog.csdn.net/ybigbear2/article/details/132203032