zoukankan      html  css  js  c++  java
  • 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- 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

  • 相关阅读:
    【LOJ#6277】数列分块1
    【LOJ6284】数列分块8
    【洛谷P3275】糖果
    【洛谷P3810】陌上花开
    【洛谷P1052】过河 离散化+dp
    【洛谷P2042】维护数列
    【模板】文艺平衡树
    【洛谷P4145】花神游历各国
    【洛谷P4878】布局
    hdu 5748(LIS)
  • 原文地址:https://www.cnblogs.com/eyunhua/p/6535038.html
Copyright © 2011-2022 走看看