面试题: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 相关文章推荐
随窗体滑动的小插件sticky源码
Jun 21 Javascript
jQuery父级以及同级元素查找介绍
Sep 04 Javascript
Javascript实现字数统计
Jul 03 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
Sep 19 Javascript
jQuery使用zTree插件实现树形菜单和异步加载
Feb 25 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
Jun 20 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
js修改onclick动作的四种方法(推荐)
Aug 18 Javascript
使用Ajax与服务器(JSON)通信实例
Nov 04 Javascript
js简单实现网页换肤功能
Apr 07 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
Sep 27 Javascript
微信小程序实现多张图片上传功能
Nov 18 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
如何通过Linux命令行使用和运行PHP脚本
2015/07/29 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
JS正则子匹配实例分析
2016/12/22 Javascript
解析JavaScript实现DDoS攻击原理与保护措施
2016/12/26 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
vue的toast弹窗组件实例详解
2018/05/14 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
M2实现Nodejs项目自动部署的方法步骤
2019/05/05 NodeJs
laypage.js分页插件使用方法详解
2019/07/27 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
python实现将汉字保存成文本的方法
2018/11/16 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
Python使用import导入本地脚本及导入模块的技巧总结
2019/08/07 Python
用Python爬取QQ音乐评论并制成词云图的实例
2019/08/24 Python
python安装本地whl的实例步骤
2019/10/12 Python
利用Python计算KS的实例详解
2020/03/03 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
使用spring mvc+localResizeIMG实现HTML5端图片压缩上传的功能
2016/12/16 HTML / CSS
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
西班牙著名的珠宝首饰品牌:P D PAOLA
2018/09/15 全球购物
美国家居用品和厨具购物网站:DealsDot
2019/10/07 全球购物
金融行业职业生涯规划范文
2014/01/17 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
首次购房证明
2015/06/19 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
Pandas搭配lambda组合使用详解
2022/01/22 Python