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 脚手架,能让你非常容易地构建项目,包含了 Webpack, Browserify, 甚至 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相比较的优势的更多相关文章
- MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录
注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...
- 你是否有一个梦想?用JavaScript[vue.js、react.js......]开发一款自定义配置视频播放器
前言沉寂了一周了,打算把这几天的结果呈现给大家.这几天抽空就一直在搞一个自定义视频播放器,为什么会有如此想法?是因为之前看一些学习视频网站时,看到它们做的视频播放器非常Nice!于是,就打算抽空开发一 ...
- 分享基于Sails.js和React.js的全栈聊天室
在线地址: http://fiora.suisuijiang.com/ 项目源码[ 路过求star(^_^) ]: 后端: https://github.com/yinxin630/fiora-bac ...
- Vue.js与React的全面对比
Vue与React的对比 Vue.js与React.js从某些反面来说很相似,通过两个框架的学习,有时候对一些用法会有一点思考,为加深学习的思索,特翻阅了两个文档,从以下各方面进行了对比,加深了对这两 ...
- 【每天半小时学框架】——React.js的模板语法与组件概念
[重点提前说:组件化与虚拟DOM是React.js的核心理念!] 先抛出一个论题:在React.js中,JSX语法提倡将 HTML 和 CSS 全都写入到JavaScrip ...
- Angular、React.js 和Node.js到底选谁?
为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...
- 混合开发的大趋势之 一个Android程序员眼中的 React.js 块级作用域 和 let
转载请注明出处:王亟亟的大牛之路 最近都有事干然后,快到月底了这个月给CSDN的博文也就两篇,想想也蛮多天没更了,那就来一篇. 老规矩,先安利:https://github.com/ddwhan012 ...
- RxJS/Cycle.js 与 React/Vue 相比更适用于什么样的应用场景?
RxJS/Cycle.js 与 React/Vue 相比更适用于什么样的应用场景? RxJS/Cycle.js 与 React/Vue 相比更适用于什么样的应用场景? - 知乎 https://www ...
- React.js vs Vue.js All in One
React.js vs Vue.js All in One React 与 Vue 区别对比 https://vuejs.org/v2/guide/comparison.html 1. 使用人数, 社 ...
随机推荐
- bzoj1319
数论 这个幂指数很难搞,那么我们取个log 去取log得有底数,那么自然这个底数能表示出所有的数 原根满足这个性质 那么我们求出原根,再去log 变成k*ind(x)=ind(a) (mod phi( ...
- 抓屏工具 faststone capture
百度百科 http://baike.baidu.com/link?url=te51CfOKYIEmqT1jsyRwcB8Pnals5xQ8nUXk6trvBPGSJRBO5G7BEZL7cYQxmx8 ...
- android实例3:拖动条
个人网站http://www.ravedonut.com/ 拖动条改变图片的透明度 xml <LinearLayout xmlns:android="http://schemas.an ...
- You Are the One
题意: 有n个人排队,第i个入场的人x的不愉快度是$D_x*(i-1)$,现在给你n个人在队伍中的位置, 你可以用一个栈让一个人后面的人先进入,问最小的不愉快度是多少. 解法: 考虑注意到用栈调整次序 ...
- 后端开发-Mybatis开发之一
2018-12-29 Mybatis简单开发:我是在eclipse上进行Java项目开发 目录结构如下: 内容如下: mysql.sql: 用于创建测试用的数据库以及表: 可以直接导入mys ...
- python 数据可视化
一.基本用法 import numpy as np import matplotlib.pyplot as plt x = np.linspace(-1,1,50) # 生成-1到1 ,平分50个点 ...
- Maven使用阿里云公共仓库
https://help.aliyun.com/document_detail/102512.html?spm=a2c40.aliyun_maven_repo.0.0.3618305449xZaK
- 豆瓣api获取图片403
1.问题描述 豆瓣的图片资源在网页中不能正常显示,403禁止访问,把地址放到浏览器中就可以正常访问了? 原因是豆瓣现在有防盗链 2.解决问题 在页面中加上 <meta name="re ...
- ADT版本查看,This Android SDK requires Andr...ate ADT to the latest问题
ADT版本查看 Help->About ADT This Android SDK requires Andr...ate ADT to the latest问题 这样的问题很好解决,一个升级AD ...
- 51nod1276(xjb)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1276 题意:中文题诶- 思路:xjb 通过画图可以发现对于当前 ...