干货!教大家如何选择Vue和React


Posted in Javascript onMarch 13, 2017

两者之间的相同之处

同样是基于组件开发的轻量级框架,同样是专注于用户界面的视图view层。

如何选择

1.1 如果喜欢用模板搭建应用(或者有这个想法)选择Vue

Vue应用默认的是把markup放在HTML中,数据绑定表达式和Angular一样,采用{{}}的形式,而指令(特殊的HTML属性)用来向模板中添加功能

<div> <p>{{ message }}</p>
 <button v-on:click="reverseMessage">Reverse Message</button>
</div>
// JS
new Vue({
 el: '#app',
 data: {
 message: 'Hello Vue.js!'
 },
 methods: {
 reverseMessage: function () {
  this.message = this.message.split('').reverse().join('');
 }
 }
});

React使用的是JSX语法(在JavaScript中创建DOM),而不使用模板。

<div id="app"></div>
// JS (pre-transpilation)
class App extends React.Component {
 constructor(props) {
 super(props);
 this.state = {
  message: 'Hello React.js!'
 };
 }
 reverseMessage() {
 this.setState({ 
  message: this.state.message.split('').reverse().join('') 
 });
 }
 render() {
 return (
  <div>
  <p>{this.state.message}</p>
  <button onClick={() => this.reverseMessage()}>
   Reverse Message
  </button>
  </div>
 )
 }
}
ReactDOM.render(App, document.getElementById('app'));

模板可以更好地把布局和功能分隔开,但是需要学习所有的HTML扩展语法,而渲染函数只需要标准的HTML和JavaScript。

注意:vue2.0提供使用模板和渲染函数的选项

1.2 想要简单一点的语法,更快的渲染速度,选择vue

使用Vue不需要转译,直接运行在浏览器中,但是React代码重度依赖于JSX和ES6语法。

1.2.1 两者处理数据的方式不一样

vue的数据可变,React的数据不可变

//vue
this.message = this.message.split('').reverse().join('');
//React
this.setState({ 
 message: this.state.message.split('').reverse().join('') 
});

对于state的数据变化,Vue比React的重新渲染系统更快更有效率。

1.3 想要构建一个大型的应用程序,选择React

模板的使用会阻碍应用扩展到更大规模,模板容易出现很难注意到的运行时的错误,同时也很难去测试,重构,分解。

1.4 想要一个同时适用于web端和原生APP的框架,选择React

React Native 是一个使用JavaScript构建出移动端原生应用程序(ios Android)的库,与React。js相同,只是不使用web组件,而是使用原生组件,只要会其中一个,就会另一个,
这样无论是开发web端还是移动端都可以用。

1.5 要最大的生态系统,最全面问题解决,更全的工具和插件可以使用React

具数量统计,React在npm上的下载量为250万/月,vue为22.5万/月

React是facebook的,会得到全面的支持与维护,vue是尤雨溪

带领的小团队维护的。

总结一下,我们发现的,Vue的优势是:

- 模板和渲染函数的弹性选择
- 简单的语法和项目配置
- 更快的渲染速度和更小的体积

React的优势是:

- 更适合大型应用和更好的可测试性
- Web端和移动端原生APP通吃
- 更大的生态系统,更多的支持和好用的工具
- 然而,React和Vue都是很优秀的框架,它们之间的相似之处多过不同- 之处,并且大部分的优秀功能是相通的:
* 用虚拟DOM实现快速渲染
* 轻量级
* 响应式组件
* 服务端渲染
* 集成路由工具,打包工具,状态管理工具的难度低
* 优秀的支持和社区

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript中几种常见排序算法小结
Feb 22 Javascript
基于jQuery的倒计时插件代码
May 07 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
js简单抽奖代码
Jan 16 Javascript
学习JavaScript编程语言的8张思维导图分享
Mar 27 Javascript
javascript实现设置、获取和删除Cookie的方法
Jun 01 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 Javascript
JavaScript简单实现弹出拖拽窗口(一)
Jun 17 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
May 31 Javascript
微信小程序 如何获取网络状态
Jul 26 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 Javascript
JavaScript 数据类型详解
Mar 13 #Javascript
Java与JavaScript中判断两字符串是否相等的区别
Mar 13 #Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 #Javascript
利用Javascript裁剪图片并存储的简单实现
Mar 13 #Javascript
js实现手机发送验证码功能
Mar 13 #Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 #Javascript
原生js实现吸顶效果
Mar 13 #Javascript
You might like
PHP 网络开发详解之远程文件包含漏洞
2010/04/25 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
Parse正式发布开源PHP SDK
2014/08/11 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
PHP7扩展开发之hello word实现方法详解
2018/01/15 PHP
javascript复制对象使用说明
2011/06/28 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
Javascript数组Array方法解读
2016/03/13 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
使用3D引擎threeJS实现星空粒子移动效果
2020/09/13 Javascript
vue中如何实现pdf文件预览的方法
2018/07/12 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
vue和iview实现Scroll 数据无限滚动功能
2019/10/31 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
用pandas按列合并两个文件的实例
2018/04/12 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python 如何调试程序崩溃错误
2020/08/03 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
美国最大的袜子制造商和零售商:Renfro Socks
2017/09/03 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
上班玩游戏检讨书
2014/02/07 职场文书
承诺书怎么写
2014/03/26 职场文书
歌唱比赛策划方案
2014/06/06 职场文书
科技工作者先进事迹
2014/08/16 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
教师工作表现评语
2014/12/31 职场文书
小学校园广播稿
2015/08/18 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
关于redisson缓存序列化几枚大坑说明
2021/08/04 Redis