干货!教大家如何选择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实现信用卡校验方法
Apr 07 Javascript
javascript函数特点实例分析
May 14 Javascript
JavaScript中windows.open()、windows.close()方法详解
Jul 28 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
AngularJs表单校验功能实例代码
Feb 09 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
Oct 06 Javascript
JS加密插件CryptoJS实现AES加密操作示例
Aug 16 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
js实现随机8位验证码
Jul 24 Javascript
JS中的一些常用的函数式编程术语
Jun 15 Javascript
微信小程序实现点击效果
Jun 21 Javascript
JavaScript实现英语单词题库
Dec 24 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中利用wsdl创建标准webservice的实现代码
2011/12/07 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
PHP编程获取各个时间段具体时间的方法
2017/05/26 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
JS setCapture 区域外事件捕捉
2010/03/18 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
Vue.js实现简单动态数据处理
2017/02/13 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
js简易版购物车功能
2017/06/17 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
2019/04/17 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
python备份文件的脚本
2008/08/11 Python
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
python实现远程控制电脑
2019/05/23 Python
Pandas的Apply函数具体使用
2020/07/21 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
技术比武方案
2014/05/19 职场文书
技能比武方案
2014/05/21 职场文书
工商局所长四风自我剖析及整改措施
2014/10/26 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python