vue.js与react.js相比较的优势

Posted 俄小发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue.js与react.js相比较的优势相关的知识,希望对你有一定的参考价值。

vue.js的简介

vue.js是一个javascript mvvm库,它是以数据驱动和组件化的思想构建的。我们平时多用js去操作dom,vue.js则是使用了数据绑定驱动来操作dom的,也就是说创建了view和model之间的绑定后,当model数据层发生变化时,view的dom就会发生相应变化。

mvvm即是model-view-viewmodel,model和view之间的衔接交互都是通过viewmodel来实现的。viewmodel就是创建一个vue实例,vue实例是作用于某一个dom元素上的。

DOM Listeners和Data Bindings是实现双向绑定的关键。
从View层看,ViewModel中的DOM Listeners工具会帮我们监测页面上DOM元素的变化,如果有变化,则更改Model中的数据;
从Model层看,当我们更新Model中的数据时,Data Bindings工具会帮我们更新页面中的DOM元素。

React框架相比它的优势

react和vue的相似之处:

1.使用虚拟dom

2.提供了响应式和组件化的视图组件

3.关注核心库,伴随于此,有配套的路由和负责处理全局状态管理的库

比较之处:

#性能方面

1.渲染性能

渲染用户界面的时候,dom的操作成本是最高的,那为了尽可能的减少对dom的操作,Vue和React都利用虚拟DOM来实现这一点,但Vue的Virtual DOM实现(一个陷阱的叉子)的权重要轻得多,因此比React的引入开销更少。

Vue 和 React 也提供功能性组件,这些组件因为都是没有声明,没有实例化的,因此会花费更少的开销。当这些都用于关键性能的场景时,Vue 将会更快。

2.更新性能

在react中,当一个组件的状态发生变化时,它将会引起整个组件的子树都进行重新渲染,从这个组件的根部开始。那为了避免子组件不必要的重新渲染,您需要随时使用shouldComponentUpdate,并使用不可变的数据结构。 在Vue中,组件的依赖关系在它的渲染期间被自动跟踪,因此系统准确地知道哪些组件实际上需要重新渲染。这就意味着在更新方面,vue也是快于React

3.开发中

在开发中,Vue 每秒最高处理 10 帧,而 React 每秒最高处理不到 1 帧。这是由于 React 有大量的检查机制,这会让它提供许多有用的警告和错误提示信息。vue在实现这些检查时,也更加密切地关注了性能方面。

#html & CSS

在react中,html和css都是通过javascript编写的,所有组件的渲染都需要依靠JSX。JSX是使用xml语法编写javascript的一种语法糖

JSX的渲染功能有以下优势:

(1)你可以使用完整的编程语言javascript来实现你的视图界面

(2)工具对 JSX 的支持相比于现有可用的其他 Vue 模板还是比较先进的(比如,linting、类型检查、编辑器的自动完成)

在 Vue 中,由于有时需要用这些功能,我们也提供了渲染功能 并且支持了 JSX。然而,对于大多数组件来说,渲染功能是不推荐使用了

vue提供的是在html中写模板,优点如下:

  • 在写模板的过程中,样式风格已定并涉及更少的功能实现。
  • 模板总是会被声明的。
  • 模板中任何 HTML 语法都是有效的。
  • 阅读起来更贴合英语(比如,for each item in items)。
  • 不需要高级版本的 JavaScript 语法,来增加可读性

css的组件作用域 

除非你把组件分布在多个文件上(例如 CSS Modules),要不在 React 中作用域内的 CSS 就会产生警告。非常简单的 CSS 还可以工作,但是稍微复杂点的,比如悬停状态、媒体查询、伪类选择符等要么通过沉重的依赖来重做要么就直接不能用。

而 Vue 可以让你在每个单文件组件中完全访问 CSS。

<style scoped>
@media (min-width: 250px) {
.list-container:hover {
background: orange;
}
}
</style>

这个可选 scoped 属性会自动添加一个唯一的属性(比如 data-v-21e5b78)为组件内 CSS 指定作用域,编译的时候.list-container:hover 会被编译成类似 .list-container[data-v-21e5b78]:hover

#规模

向上扩展

Vue 的路由库和状态管理库都是由官方维护支持且与核心库同步更新的

React 则是选择把这些问题交给社区维护,因此创建了一个更分散的生态系统。但相对的,React 的生态系统相比 Vue 更加繁荣

最后,Vue 提供了Vue-cli 脚手架,能让你非常容易地构建项目,包含了 WebpackBrowserify, 甚至 no build system。React 在这方面也提供了create-react-app,但是现在还存在一些局限性:

  • 它不允许在项目生成时进行任何配置,而 Vue 支持 Yeoman-like 定制。
  • 它只提供一个构建单页面应用的单一模板,而 Vue 提供了各种用途的模板。
  • 它不能用用户自建的模板构建项目,而自建模板对企业环境下预先建立协议是特别有用的。

向下扩展

 react学习需要你知道JSX和ES2015,vue使用比较简单,只需要引用<script src="https://unpkg.com/vue/dist/vue.js"></script>就可以使用了,生产环境时替换成min版的即可

 

 

看vue.js官网时的记录:原文链接:http://cn.vuejs.org/v2/guide/comparison.html

 



以上是关于vue.js与react.js相比较的优势的主要内容,如果未能解决你的问题,请参考以下文章

React.js与Vue.js:流行框架的比较

React.js和Vue.js的语法并列比较

基于 React.js + Redux + Bootstrap 的 Ruby China 示例

Vue.js与React的全面对比

Vue JS 和 React JS 有啥区别? [关闭]

号称目前最火的前端框架Vue,它有啥显著特点呢?