Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >前端面试宝典(五)—— Vue

前端面试宝典(五)—— Vue

作者头像
萌兔IT
发布于 2020-04-13 03:30:13
发布于 2020-04-13 03:30:13
7170
举报
文章被收录于专栏:萌兔it萌兔it

小伙伴们,我又回来了,实在太忙了。今天继续以前的专题吧,今天说说Vue。

什么是 MVVM?

MVVM是Model-View-ViewModel的简写,Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表 UI 组件,它负责将数据模型转化成 UI 展现出来,ViewModel 是一个同步 View 和 Model 的对象(桥梁)。在MVVM的框架下视图和模型是不能直接通信的。它们通过ViewModel来通信,ViewModel通常要实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改动,这实际上就实现了数据的双向绑定。并且MVVM中的View 和 ViewModel可以互相通信。

说说Vue的MVVM实现原理?

数据劫持、数据渲染、数据监听

  1. 数据劫持:通过Object.defineProperty进行数据劫持,在对象上定义新属性或修改属性并返回对象。
  2. 数据监听:通过sub,pub的发布者订阅者模式来对数据进行监听。
  3. 数据渲染:数据渲染为html分为两种情况,第一种是初次渲染的时候,第二种是渲染之后数据发生改变的时候,它们都需要调用updateComponent。

mvvm 和 mvc 区别?它和其它框架(jquery)的区别是什么?哪些场景适合?

MVC中M是Model(数据模型),用于存放数据;V是View(视图),也就是用户界面;C则是Controller是Model和View的协调者,Controller把Model中的数据拿过来给View使用。

MVVM上题已经介绍。

区别:vue 数据驱动,通过数据来显示视图层而不是节点操作。且mvvm 主要解决了 mvc 中大量的 DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验。

Vue生命周期的理解?

vue 的生命周期就是 vue 实例从创建到销毁的过程。

  • beforeCreate:组件实例刚被创建,组件属性计算之前
  • created:组件实例创建完成,属性已绑定,但DOM还未生成,$el属性还不存在
  • beforeMount:模板编译/挂载之前
  • mounted:模板编译/挂载之后
  • beforeUpdate:组件更新之前
  • updated:组件更新之后
  • beforeDestroy:组件销毁之前调用
  • destroyed:组件销毁之后调用

组件之间如何通信?

  1. props/$emit:父组件A通过props的方式向子组件B传递,B to A 通过在 B 组件中 $emit, A 组件中 v-on 的方式实现。用于父传子或子传父。
  2. $emit/$on:通过一个空的Vue实例作为中央事件总线事件中心),用它来触发事件和监听事件,巧妙而轻量地实现了任何组件间的通信,包括父子、兄弟、跨级。当我们的项目比较大时,可以选择更好的状态管理解决方案vuex。
  3. Vuex:Vuex实现了一个单向数据流,在全局拥有一个State存放数据,当组件要更改State中的数据时,必须通过Mutation进行,Mutation同时提供了订阅者模式供外部插件调用获取State数据的更新。用于兄弟通信。
  4. provide/inject:Vue2.2.0新增API,这对选项需要一起使用,以允许一个祖先组件向其所有子孙后代注入一个依赖,不论组件层次有多深,并在起上下游关系成立的时间里始终生效。provide / inject API 主要解决了跨级组件间的通信问题,不过它的使用场景,主要是子组件获取上级组件的状态,跨级组件间建立了一种主动提供与依赖注入的关系。用于跨级通讯。

Compute与watch的区别?

computed:

  1. computed是计算属性,也就是计算值,它更多用于计算值的场景
  2. computed具有缓存性,computed的值在getter执行后是会缓存的,只有在它依赖的属性值改变之后,下一次获取computed的值时才会重新调用对应的getter来计算
  3. computed适用于计算比较消耗性能的计算场景

watch:

  1. 类似于某些数据的监听回调,用于观察props $emit或者本组件的值,当数据变化时来执行回调进行后续操作
  2. 无缓存性,页面重新渲染时值不变化也会执行

下期我们继续~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 萌兔it 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
本文以前端面试官的角度出发,对 Vue 框架中一些重要的特性、框架的原理以问题的形式进行整理汇总,意在帮助作者及读者自测下 Vue 掌握的程度。本文章节结构以从易到难进行组织,建议读者按章节顺序进行阅读,当然大佬级别的请随意。希望读者读完本文,有一定的启发思考,也能对自己的 Vue 掌握程度有一定的认识,对缺漏之处进行弥补,对 Vue 有更好的掌握。文章最后一题,欢迎同学们积极回答,分享各自的经验 ~~~
Nealyang
2019/09/29
1.7K0
30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
前端必会vue面试题(必备)_2023-03-15
有五种,分别是 State、 Getter、Mutation 、Action、 Module
yyds2026
2023/03/15
5700
30 道 Vue 面试题,内含详细讲解(中)
比如有父组件 Parent 和子组件 Child,如果父组件监听到子组件挂载 mounted 就做一些逻辑处理,可以通过以下写法实现:
公号:咻咻ing
2019/09/10
1.3K0
vue系列之面试总结
答:Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载 Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。 它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。
桃翁
2019/05/31
1.1K0
前端面试(3)vue
https://juejin.im/entry/6844903479044112391
leader755
2022/03/08
3.4K0
前端面试(3)vue
校招前端二面高频vue面试题1
路由保护在应用开发过程中非常重要,几乎每个应用都要做各种路由权限管理,因此相当考察使用者基本功。
bb_xiaxia1998
2023/01/02
5960
京东前端高频vue面试题
通俗点理解就是,vuex 弱化 dispatch,通过commit进行 store状态的一次更变;取消了action概念,不必传入特定的 action形式进行指定变更;弱化reducer,基于commit参数直接对数据进行转变,使得框架更加简易;
bb_xiaxia1998
2022/12/19
1.3K0
19 道高频 vue 面试题解答(下)
指令本质上是装饰器,是 vue 对 HTML 元素的扩展,给 HTML 元素增加自定义功能。vue 编译 DOM 时,会找到指令对象,执行指令的相关方法。
bb_xiaxia1998
2022/10/10
2.1K0
前端面试题汇总-Vue篇
当一个Vue实例创建时,Vue会遍历data中的属性,用 Object.defineProperty(vue3.0使用proxy )将它们转为 getter/setter,并且在内部追踪相关依赖,在属性被访问和修改时通知变化。 每个组件实例都有相应的 watcher 程序实例,它会在组件渲染的过程中把属性记录为依赖,之后当依赖项的setter被调用时,会通知watcher重新计算,从而致使它关联的组件得以更新。
越陌度阡
2023/01/01
1.6K0
前端面试题汇总-Vue篇
vue高频面试题(附答案)
React是pull的方式侦测变化,当React知道发生变化后,会使用Virtual Dom Diff进行差异检测,但是很多组件实际上是肯定不会发生变化的,这个时候需要用shouldComponentUpdate进行手动操作来减少diff,从而提高程序整体的性能.
helloworld1024
2022/08/01
9070
阿里前端常考vue面试题汇总_2023-02-27
使用mapGetters辅助函数, 利用对象展开运算符将getter混入computed 对象中
用户10358241
2023/02/27
8420
Vue常见面试题汇总
MVVM 是 Model-View-ViewModel 的缩写。mvvm 是一种设计思想。Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表 UI 组件,它负责将数据模型转化成 UI 展现出来,ViewModel 是一个同步 View 和 Model 的对象。
物流IT圈
2019/07/16
1.5K0
Vue.js 面试、常见问题答疑
第一题应该是最简单的,提这个问题,也是想让候选人不那么紧张,因为但凡用过 Vue.js,多少知道v-show 和 v-if 的区别,否则就没得聊了。不过这最简单的一道题,有三个层次,我会逐一追问。首先,基本所有人都会说到:
李才哥
2019/07/10
2K0
前端面试之Vue
视图模型双向绑定,是Model-View-ViewModel的缩写,也就是把MVC中的Controller演变成ViewModel。Model层代表数据模型,View代表UI组件,ViewModel是View和Model层的桥梁,数据会绑定到viewModel层并自动将数据渲染到页面中,视图变化的时候会通知viewModel层更新数据。以前是操作DOM结构更新视图,现在是数据驱动视图。
CODER-V
2023/03/04
3.8K0
前端面试之Vue
vue面试题+答案,2021前端面试
MVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范
zz1998
2021/07/04
1.5K0
2021vue经典面试题_vue面试题大全
ViewModel 监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View。
全栈程序员站长
2022/11/10
2.2K0
2021vue经典面试题_vue面试题大全
vue面试题总结
ViewModel把view和model关联起来,ViewModel负责把Model的数据同步到view显出来,还负责吧view修改同步到Model。 答案详情
andyhu
2023/06/27
3670
vue面试题总结
前端vue面试题汇总
v-if 是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建;也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
bb_xiaxia1998
2022/12/15
7410
2021vue面试题+答案
v-if 是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建;也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
zz1998
2021/07/05
8650
Vue经典面试题总结(含答案)
MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑;View 代表UI 组件,它负责将数据模型转化成UI 展现出来,ViewModel 是一个同步View 和 Model的对象。
Javanx
2019/09/04
2K0
Vue经典面试题总结(含答案)
相关推荐
30 道 Vue 面试题,内含详细讲解(涵盖入门到精通,自测 Vue 掌握程度)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档