面试题:react和vue的区别分析


Posted in Javascript onApril 08, 2019

react和vue是什么?有啥区别吗?

三大框架之二,大家应该都不会陌生,都有学习过或者开发中使用。

但是他们到底有啥区别呢?这个就是我们这篇文章所需探讨并学习的。

开始!

MVC 和 MVVM

首先,来说明下这些字母代表的含义

  • M:Model 模型
  • V:View 视图
  • C:Controller 控制器
  • VM:ViewModel 视图模型

首先说下MVC,大家肯定也知道三大框架中的另外一个(anuglar)。

如果你写过angular那就肯定能很清楚的了解这个含义,看如下代码:

<input ng-model="ball.basketball" />
.contronller('BallController', ($scope) => {
  const ball = {
    basketball: '我是蔡徐坤'
  }
  $scope.ball = ball
})

input标签很好理解,就是MVC中的V(view)视图。

controller顾名思义,就是MVC中的C(controller)控制器。

ball的话就是MVC中的M(model)模型。

MVC的概念很简单,你要展示一个篮球的页面。

设置一个篮球的模型放在那等待使用。

写一个你需要展示篮球的视图。

使用控制器来让模型和视图交互。

看起来MVC的概念很舒服,框架的很规范,但是代码量多了之后,就会显得整个项目很臃肿,一点都不灵活。

作者有幸维护过一个称为“屎山”的angular1.x项目,因为经过上百次(大概有)的需求迭代后,每个controller的代码超过2000行,每次修bug和写新需求,都需要维护很多方方面面的东西。

然后我们来了解下MVVM。

<input v-model="ball.basketball" />
let vm = new Vue({
  data: {
    ball: {
      baskertball: '蔡徐坤就是我'
    }
  }
})
  • M:Model 模型
  • V:View 视图
  • VM: ViewModel 视图模型

其实看代码就理解了,vm其实就是vue对象。它的功能就是绑定到view上,Model里的篮球不管更新,还是做其他操作,都会通过vm来通知派发至view。

这样做的好处呢,第一点,一个业务逻辑你就不用写很多遍。类似一个shopcart的功能,你把它的封装成一个组件(ViewModel)在很多地方都可以直接引入调用。

ps:vue和React两者的区别和共同点

两者的本质区别

1.vue本质是MVVM框架,是由MVC发展而来。

2.React本质是前端组件化框架,是由后端组件化发展而来。

模板的区别

1.vue使用模板--(最初由angular提出)

<div>
<h1 v-if="ok">Yes</h1>

<h1 v-else>No</h1>
</div>

2.React使用JSX模板,现在已经趋向标准化,完全可以独立出来使用。

<div>
{ok?<h1>Yes</h1>:<h1>No</h1>}
</div>

从学习成本来说:JSX模板更简单,只需要知道{ }里是js语法,vue模板v-if,v-else指令需要学习。
从模板逻辑分离角度考虑:JSX模板和JS逻辑混在一起,没有分开,容易造成混乱。

3.组件化的区别

React本身就是组件化,没有组件化就不是React
vue也支持组件化,不过是在MVVM上的扩展

4.两者的共同点

都支持组件化

都是数据驱动视图

总结

以上所述是小编给大家介绍的面试题:react和vue的区别分析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
经常用到的JavasScript事件的翻译
Apr 09 Javascript
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
Aug 08 Javascript
sogou地图API用法实例教程
Sep 11 Javascript
jQuery中用dom操作替代正则表达式
Dec 29 Javascript
jQuery基于扩展实现的倒计时效果
May 14 Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 Javascript
JS button按钮实现submit按钮提交效果
Nov 01 Javascript
利用JS判断鼠标移入元素的方向
Dec 11 Javascript
详解使用angular的HttpClient搭配rxjs
Sep 01 Javascript
详解elementUI中input框无法输入的问题
Apr 27 Javascript
js用正则表达式筛选年月日的实例方法
Jan 04 Javascript
JS前端使用canvas实现扩展物体类和事件派发
Aug 05 Javascript
vue router 组件的高级应用实例代码
Apr 08 #Javascript
JavaScript中的一些实用小技巧总结
Apr 07 #Javascript
详解vue 不同环境配置不同的打包命令
Apr 07 #Javascript
JavaScript数组去重的几种方法
Apr 07 #Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
Apr 07 #Javascript
js中Generator函数的深入讲解
Apr 07 #Javascript
巧妙运用v-model实现父子组件传值的方法示例
Apr 07 #Javascript
You might like
使用sockets:从新闻组中获取文章(一)
2006/10/09 PHP
两种php给图片加水印的实现代码
2020/04/18 PHP
CodeIgniter 完美解决URL含有中文字符串
2016/05/13 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
微信公众号模板消息群发php代码示例
2016/12/29 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
获取HTML DOM节点元素的方法的总结
2009/08/21 Javascript
JavaScript 动态创建VML的方法
2009/10/14 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
页面只能打开一次Cooike如何实现
2012/12/04 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
Django中实现点击图片链接强制直接下载的方法
2015/05/14 Python
Python多线程结合队列下载百度音乐的方法
2015/07/27 Python
使用python实现省市三级菜单效果
2016/01/20 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
Python使用gRPC传输协议教程
2018/10/16 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
python 实现图像快速替换某种颜色
2020/06/04 Python
python绘制雷达图实例讲解
2021/01/03 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
婚前财产公证书
2014/04/10 职场文书
四风问题对照检查材料
2014/09/22 职场文书
先进个人事迹材料
2014/12/29 职场文书
2015年劳动部工作总结
2015/05/23 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
sql server 累计求和实现代码
2022/02/28 SQL Server
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript