干货!教大家如何选择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 相关文章推荐
制作特殊字的脚本
Jun 26 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
Jan 23 Javascript
将Datatable转化成json发送前台实现思路
Sep 06 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
Oct 15 Javascript
js获取判断上传文件后缀名的示例代码
Feb 19 Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 Javascript
js简单倒计时实现代码
Apr 30 Javascript
JavaScript递归算法生成树形菜单
Aug 15 Javascript
微信小程序简单实现form表单获取输入数据功能示例
Nov 30 Javascript
Layui数据表格之获取表格中所有的数据方法
Aug 20 Javascript
Angular如何由模板生成DOM树的方法
Dec 23 Javascript
Rust中的Struct使用示例详解
Aug 14 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上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
2010/12/28 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
在 Angular 中实现搜索关键字高亮示例
2017/03/21 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
vue配置font-awesome5的方法步骤
2019/01/27 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
javascript+css实现俄罗斯方块小游戏
2020/06/28 Javascript
原生JS实现拖拽效果
2020/12/04 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
[16:14]教你分分钟做大人:米拉娜(HEROS)
2014/11/24 DOTA
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
浅谈keras保存模型中的save()和save_weights()区别
2020/05/21 Python
浅析python连接数据库的重要事项
2021/02/22 Python
Toppik顶丰增发纤维官网:解决头发稀疏
2017/12/30 全球购物
巴西儿童时尚购物网站:Dinda
2019/08/14 全球购物
中专生的个人自我评价
2013/12/11 职场文书
房产销售经理职责
2013/12/20 职场文书
初中生自我鉴定
2014/02/04 职场文书
女性健康知识讲座通知
2015/04/23 职场文书
职位证明模板
2015/06/23 职场文书
研讨会致辞
2015/07/31 职场文书
golang DNS服务器的简单实现操作
2021/04/30 Golang
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python