干货!教大家如何选择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 相关文章推荐
让mayfish支持mysqli数据库驱动的实现方法
May 22 Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 Javascript
Node.js(安装,启动,测试)
Jun 09 Javascript
Javascript中的arguments与重载介绍
Mar 15 Javascript
CSS3实现动态背景登录框的代码
Jul 28 Javascript
jQuery实现页面滚动时智能浮动定位
Jan 08 Javascript
Vue-Router实现组件间跳转的三种方法
Nov 07 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
May 03 Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 Javascript
javascript实现弹出层效果
Dec 10 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 Javascript
如何利用JavaScript编写更好的条件语句详解
Aug 10 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
德劲1104的电路分析与改良
2021/03/01 无线电
第三章 php操作符与控制结构代码
2011/12/30 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
js option删除代码集合
2008/11/12 Javascript
关于文本框的一些限制控制总结~~
2010/04/15 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
当某个文本框成为焦点时即清除文本框内容
2014/04/28 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
javascript表单事件处理方法详解
2016/05/15 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
vue和webpack安装命令详解
2018/06/15 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
JavaScript函数式编程(Functional Programming)箭头函数(Arrow functions)用法分析
2019/05/22 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
[39:21]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.24
2019/09/10 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python实现的一个简单LRU cache
2014/09/26 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
HTML5单选框、复选框、下拉菜单、文本域的实现代码
2020/12/01 HTML / CSS
口腔医学技术应届生求职信
2013/11/09 职场文书
财务管理职业生涯规划范文
2013/12/27 职场文书
高中生期末评语
2014/01/28 职场文书
幼儿教师工作感言
2014/02/14 职场文书
节约用水演讲稿
2014/05/21 职场文书
2015年超市员工工作总结
2015/05/04 职场文书