干货!教大家如何选择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仿QQ商城带左右按钮控制焦点图片切换滚动效果
Jun 27 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
javascript数组去重常用方法实例分析
Apr 11 Javascript
微信小程序 标签传入数据
May 08 Javascript
原生JS+Canvas实现五子棋游戏
May 28 Javascript
Vue.js实现价格计算器功能
Mar 30 Javascript
详解weex默认webpack.config.js改造
Jan 08 Javascript
微信小程序带动画弹窗组件使用方法详解
Nov 27 Javascript
微信小程序的mpvue框架快速上手指南
May 15 Javascript
在vue中动态添加class类进行显示隐藏实例
Nov 09 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
Aug 20 Javascript
微信小程序实现点击导航条切换页面
Nov 19 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&amp;&amp;mysql)一
2006/10/09 PHP
php实例分享之通过递归实现删除目录下的所有文件详解
2014/05/15 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
Firefox div高度自适应
2009/04/28 Javascript
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
使用nodejs实现JSON文件自动转Excel的工具(推荐)
2020/06/24 NodeJs
小程序实现列表倒计时功能
2021/01/29 Javascript
[32:47]完美世界DOTA2联赛 GXR vs IO 第二场 11.07
2020/11/09 DOTA
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python的设计模式编程入门指南
2015/04/02 Python
Python中的元类编程入门指引
2015/04/15 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
pyenv命令管理多个Python版本
2017/03/26 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Python面向对象程序设计示例小结
2019/01/30 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
感知器基础原理及python实现过程详解
2019/09/30 Python
python3 requests库实现多图片爬取教程
2019/12/18 Python
python excel多行合并的方法
2020/12/09 Python
德国运动鞋网上商店:Afew Store
2018/01/05 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
医学专业毕业生个人的求职信
2013/12/04 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
高一新生军训方案
2014/05/12 职场文书
公务员处分决定书
2015/06/25 职场文书
Python学习之迭代器详解
2022/04/01 Python