面试题: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 相关文章推荐
Jquery Ajax 学习实例2 向页面发出请求 返回JSon格式数据
Mar 15 Javascript
JS操作CSS随机改变网页背景实现思路
Mar 10 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
Mar 19 Javascript
jQuery控制网页打印指定区域的方法
Apr 07 Javascript
javascript实现控制div颜色
Jul 07 Javascript
JavaScript取得键盘按下方向键是哪个的方法
Aug 04 Javascript
jQuery原理系列-常用Dom操作详解
Jun 07 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
基于IView中on-change属性的使用详解
Mar 15 Javascript
vue实现点击选中,其他的不选中方法
Sep 05 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 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
PHP基础学习小结
2011/04/17 PHP
php几个预定义变量$_SERVER用法小结
2014/11/07 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
Javascript中的变量使用说明
2010/05/18 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
2014/06/23 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
javascript回到顶部特效
2016/07/30 Javascript
js数组去重的hash方法
2016/12/22 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
angularjs 页面自适应高度的方法
2018/01/17 Javascript
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
javascript设计模式 ? 桥接模式原理与应用实例分析
2020/04/13 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
推荐下python/ironpython:从入门到精通
2007/10/02 Python
Python中的tuple元组详细介绍
2015/02/02 Python
Python3访问并下载网页内容的方法
2015/07/28 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
对python操作kafka写入json数据的简单demo分享
2018/12/27 Python
十行代码使用Python写一个USB病毒
2019/06/21 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
python如何使用代码运行助手
2020/07/03 Python
python+selenium实现12306模拟登录的步骤
2021/01/21 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
《祁黄羊》教学反思
2014/04/22 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
和领导吃饭祝酒词
2015/08/11 职场文书