面试题: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 相关文章推荐
再谈ie和firefox下的document.all属性
Oct 21 Javascript
基于jquery的跟随屏幕滚动代码
Jul 24 Javascript
jquery修改属性值实例代码(设置属性值)
Jan 06 Javascript
js格式化时间和js格式化时间戳示例
Feb 10 Javascript
JS自调用匿名函数具体实现
Feb 11 Javascript
使用Plupload实现直接上传附件至七牛云存储
Dec 26 Javascript
浅谈Javascript Base64 加密解密
Dec 28 Javascript
jQuery制作可自定义大小的拼图游戏
Mar 30 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
JS实现的样式切换功能tableCSS实例
Dec 30 Javascript
详解angularjs 关于ui-router分层使用
Jun 12 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
php生成缩略图示例代码分享(使用gd库实现)
2014/01/20 PHP
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
再谈IE中Flash控件的自动激活 ObjectWrap
2007/03/09 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
javascript表格隔行变色加鼠标移入移出及点击效果的方法
2015/04/10 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
jQuery实现可用于博客的动态滑动菜单完整实例
2015/09/17 Javascript
详解Bootstrap按钮
2016/01/04 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
jQuery插件JWPlayer视频播放器用法实例分析
2017/01/11 Javascript
vue2单元测试环境搭建
2018/05/24 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
js实现微信聊天界面
2020/08/09 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
[02:05]2014DOTA2西雅图国际邀请赛 BBC第二天小组赛总结
2014/07/11 DOTA
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
python实现协同过滤推荐算法完整代码示例
2017/12/15 Python
查看python下OpenCV版本的方法
2018/08/03 Python
如何基于Python获取图片的物理尺寸
2019/11/25 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
详解Python3中的 input() 函数
2020/03/18 Python
python,Java,JavaScript实现indexOf
2020/09/09 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
2014年超市工作总结
2014/11/19 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL
Python pyecharts绘制条形图详解
2022/04/02 Python