干货!教大家如何选择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 相关文章推荐
JQUERY操作JSON实例代码
Feb 09 Javascript
jQuery学习笔记之DOM对象和jQuery对象
Dec 22 Javascript
JS控制图片等比例缩放的示例代码
Dec 24 Javascript
详细分析使用AngularJS编程中提交表单的方式
Jun 19 Javascript
JS模态窗口返回值兼容问题的完美解决方法
May 28 Javascript
jquery实现瀑布流效果 jquery下拉加载新数据
Dec 12 Javascript
vue2 中如何实现动态表单增删改查实例
Jun 09 Javascript
js弹性势能动画之抛物线运动实例详解
Jul 27 Javascript
React Native验证码倒计时工具类分享
Oct 24 Javascript
JSONP原理及应用实例详解
Sep 13 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
Dec 12 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
May 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
PHP多线程类及用法实例
2014/12/03 PHP
PHP简单实现记录网站访问量功能示例
2018/06/06 PHP
Array对象方法参考
2006/10/03 Javascript
JavaScript 函数调用规则
2009/09/14 Javascript
JQuery实现的在新窗口打开链接的方法小结
2010/04/22 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
2011/04/10 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
jquery实现侧边栏左右伸缩效果的示例
2017/12/19 jQuery
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
vue-cli中安装方法(图文详细步骤)
2018/12/12 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
微信小程序如何实现点击图片放大功能
2020/01/21 Javascript
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Python模块搜索路径代码详解
2018/01/29 Python
实时获取Python的print输出流方法
2019/01/07 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
pandas计算最大连续间隔的方法
2019/07/04 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
不到20行实现Python代码即可制作精美证件照
2020/04/24 Python
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
毕业生求职简历的自我评价
2013/10/23 职场文书
超市营业员岗位职责
2013/12/20 职场文书
共产党员承诺书
2014/03/25 职场文书
机械设计制造及其自动化专业求职信
2014/06/17 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
交通事故协议书范本
2016/03/19 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python