干货!教大家如何选择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 分栏效果实现代码
Aug 29 Javascript
javascript 面向对象 function类
May 13 Javascript
jquery 的 $(&quot;#id&quot;).html() 无内容的解决方法
Jun 07 Javascript
jquery监控数据是否变化(修正版)
Apr 12 Javascript
jquery bind(click)传参让列表中每行绑定一个事件
Aug 06 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
Jun 25 Javascript
JS简单实现浮动窗口效果示例
Sep 07 Javascript
怎样判断jQuery当前元素是隐藏还是显示
Nov 23 Javascript
详解Javascript获取缓存和清除缓存API
May 25 Javascript
JavaScript中附件预览功能实现详解(推荐)
Aug 15 Javascript
聊聊JS动画库 Velocity.js的使用
Mar 13 Javascript
详解react-refetch的使用小例子
Feb 15 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 检查扩展库或函数是否可用的代码
2010/04/06 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
用PHP将数据导入到Foxmail的实现代码
2010/09/05 PHP
php遍历数组的方法分享
2012/03/22 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
用unescape反编码得出汉字示例
2014/04/24 Javascript
实例分析js和C#中使用正则表达式匹配a标签
2014/11/26 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
jQuery实现渐变弹出层和弹出菜单的方法
2015/02/20 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
Javascript编程之继承实例汇总
2015/11/28 Javascript
JS中的forEach、$.each、map方法推荐
2016/04/05 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
vue.js学习之vue-cli定制脚手架详解
2017/07/02 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
Python迭代用法实例教程
2014/09/08 Python
利用Python的Django框架中的ORM建立查询API
2015/04/20 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
Django处理多用户类型的方法介绍
2019/05/18 Python
python matplotlib拟合直线的实现
2019/11/19 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
常用的10个Python实用小技巧
2020/08/10 Python
Python安装Bs4的多种方法
2020/11/28 Python
美国领先的奢侈美容零售商:Bluemercury
2017/07/26 全球购物
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
吨的认识教学反思
2014/04/27 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
Python机器学习实战之k-近邻算法的实现
2021/11/27 Python