干货!教大家如何选择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 相关文章推荐
js 匿名调用实现代码
Jun 19 Javascript
根据出生日期自动取得星座的js代码
Jul 20 Javascript
jQuery插件MixItUp实现动画过滤和排序
Apr 12 Javascript
jQuery代码实现表格中点击相应行变色功能
May 09 Javascript
微信小程序  简单实例(阅读器)的实例开发
Sep 29 Javascript
jquery代码规范让代码越来越好看
Feb 03 Javascript
第一个Vue插件从封装到发布
Nov 22 Javascript
微信小程序实现弹出层效果
May 26 Javascript
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
Apr 17 Javascript
javascript实现移动端上传图片功能
Aug 18 Javascript
JS如何生成动态列表
Sep 22 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 正则判断中文UTF-8或GBK的思路及具体实现
2013/11/26 PHP
php初始化对象和析构函数的简单实例
2014/03/11 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
Laravel程序架构设计思路之使用动作类
2018/06/07 PHP
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
一个JavaScript递归实现反转数组字符串的实例
2014/10/14 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
js判断文本框输入的内容是否为数字
2015/12/23 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
利用fecha进行JS日期处理
2016/11/21 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
Python Deque 模块使用详解
2014/07/04 Python
python实现通过shelve修改对象实例
2014/09/26 Python
详解python解压压缩包的五种方法
2019/07/05 Python
python批量生成条形码的示例
2020/10/10 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
智利最大的网上商店:Linio智利
2016/11/24 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
会计专业毕业生推荐信
2013/11/05 职场文书
大学理论知识学习自我鉴定
2014/04/28 职场文书
企业读书活动总结
2014/06/30 职场文书
2014年技术员工作总结
2014/11/18 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书
小学德育工作总结2015
2015/05/12 职场文书
高二化学教学反思
2016/02/22 职场文书