面试题: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 相关文章推荐
js中字符替换函数String.replace()使用技巧
Aug 14 Javascript
JavaScript基本编码模式小结
May 23 Javascript
JS 控件事件小结
Oct 31 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
Dec 22 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 Javascript
JS构造函数与原型prototype的区别介绍
Jul 04 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
Apr 10 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
vue router 源码概览案例分析
Oct 09 Javascript
vue 项目 iOS WKWebView 加载
Apr 17 Javascript
vue-cli+axios实现文件上传下载功能(下载接收后台返回文件流)
May 10 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
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
获取鼠标在div中的相对位置的实现代码
2013/12/30 Javascript
JavaScript 实现鼠标拖动元素实例代码
2014/02/24 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
javascript实现控制div颜色
2015/07/07 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
JavaScript中数组添加值和访问值常见问题
2016/02/06 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
Kindeditor单独调用多图上传实例
2017/07/31 Javascript
jquery+css实现简单的图片轮播效果
2017/08/07 jQuery
详解Vue2 SSR 缓存 Api 数据
2017/11/20 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
[01:05:40]VG vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python实现CET查分的方法
2015/03/10 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
Python模拟三级菜单效果
2017/09/11 Python
python使用opencv按一定间隔截取视频帧
2018/03/06 Python
python3 拼接字符串的7种方法
2018/09/12 Python
正确理解Python中if __name__ == '__main__'
2019/01/24 Python
详解python读取image
2019/04/03 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
Python读取ini配置文件传参的简单示例
2021/01/05 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
测量工程专业求职信
2014/02/24 职场文书
大学应届生的自我评价
2014/03/06 职场文书
诚信承诺书范文
2014/03/27 职场文书
横店影视城导游词
2015/02/06 职场文书