面试题: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 相关文章推荐
关于JAVASCRIPT urldecode URL解码的问题
Jan 08 Javascript
深入领悟JavaScript中的面向对象
Nov 18 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
Jul 22 Javascript
RequireJS简易绘图程序开发
Oct 28 Javascript
Vue.js第三天学习笔记(计算属性computed)
Dec 01 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
基于vue组件实现猜数字游戏
May 28 Javascript
浅谈React + Webpack 构建打包优化
Jan 23 Javascript
详解ES6 Fetch API HTTP请求实用指南
Nov 14 Javascript
为什么说JavaScript预解释是一种毫无节操的机制详析
Nov 18 Javascript
JavaScript设计模式之装饰者模式实例详解
Jan 17 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 21 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
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
node.js实现端口转发
2016/04/14 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
Python找出文件中使用率最高的汉字实例详解
2015/06/03 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
Python File(文件) 方法整理
2019/02/18 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
Django ModelForm操作及验证方式
2020/03/30 Python
Opencv求取连通区域重心实例
2020/06/04 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
C++:memset ,memcpy和strcpy的根本区别
2013/04/27 面试题
大二自我鉴定范文
2013/10/05 职场文书
个人实用简单的自我评价
2013/10/19 职场文书
学生会个人自荐书范文
2014/02/12 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
奖金申请报告模板
2015/05/15 职场文书
刑事法律意见书
2015/06/04 职场文书
投诉书格式范本
2015/07/02 职场文书
运动会班级前导词
2015/07/20 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
python异常中else的实例用法
2021/06/15 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
2022/04/07 Python
Grafana可视化监控系统结合SpringBoot使用
2022/04/19 Redis