干货!教大家如何选择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 异步调用框架 (Part 1 - 问题 &amp; 场景)
Aug 03 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
简单易用的倒计时js代码
Aug 04 Javascript
基于jQuery实现下拉框
Nov 24 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
学习JavaScript设计模式(多态)
Nov 25 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
HTML的select控件美化
Mar 27 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
js使用cookie实现记住用户名功能示例
Jun 13 Javascript
JavaScript实现背景自动切换小案例
Sep 27 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的无限分类实现想法~
2007/01/02 PHP
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
新浪微博OAuth认证和储存的主要过程详解
2015/03/27 PHP
php中Ioc(控制反转)和Di(依赖注入)
2017/05/07 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
用js生产批量批处理执行命令
2008/07/28 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
vue组件发布到npm简单步骤
2017/11/30 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
JS实现监控微信小程序的原理
2018/06/15 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
[04:32]DOTA2著名解说配音敌法师 现场专访海涛怒切假腿
2013/12/20 DOTA
python用ConfigObj读写配置文件的实现代码
2013/03/04 Python
python: line=f.readlines()消除line中\n的方法
2018/03/19 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
python获取时间及时间格式转换问题实例代码详解
2018/12/06 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
Python读取表格类型文件代码实例
2020/02/17 Python
python collections模块的使用
2020/10/16 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
2020/10/30 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
英国第一独立滑雪板商店:The Snowboard Asylum
2020/01/16 全球购物
2014年预备党员学习两会心得体会
2014/03/17 职场文书
学校关爱留守儿童活动方案
2014/08/27 职场文书
国庆庆典邀请函
2015/02/02 职场文书
司机个人年终总结
2015/03/03 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
幼儿园2016年圣诞活动总结
2016/03/31 职场文书