面试题: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的链式调用之each函数
Dec 03 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
js实现Select列表各项上移和下移的方法
Aug 14 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
详解AngularJS中的filter过滤器用法
Jan 04 Javascript
微信小程序之小豆瓣图书实例
Nov 30 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
Aug 07 Javascript
原生JS与jQuery编写简单选项卡
Oct 30 jQuery
webpack中CommonsChunkPlugin详细教程(小结)
Nov 09 Javascript
angularjs实现时间轴效果的示例代码
Nov 29 Javascript
关于Vue组件库开发详析
Jul 01 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
Apr 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
PHP 类型转换函数intval
2009/06/20 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
PHP中mysql_field_type()函数用法
2014/11/24 PHP
php抛出异常与捕捉特定类型的异常详解
2016/10/26 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
再论Javascript的类继承
2011/03/05 Javascript
js异常捕获方法介绍
2013/04/10 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
JavaScript通过事件代理高亮显示表格行的方法
2015/05/27 Javascript
基于jQuery实现简单的折叠菜单效果
2015/11/23 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
JavaScript数组的5种迭代方法
2017/09/29 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
ant design实现圈选功能
2019/12/17 Javascript
vue和小程序项目中使用iconfont的方法
2020/05/19 Javascript
Python字符串详细介绍
2015/05/09 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
wxpython绘制音频效果
2019/11/18 Python
解决pyshp UnicodeDecodeError的问题
2019/12/06 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
Linden Leaves官网:新西兰纯净护肤品
2020/12/20 全球购物
计算机应用专业应届毕业生中文求职信范文
2013/11/29 职场文书
餐厅经理岗位职责范本
2014/02/17 职场文书
安全生产管理责任书
2014/04/16 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书