现在前端面试会有很多关于Vue的面试问题。VUE框架整理了几个高频面试问题,希望对你面试有帮助。也许这个话题会在接下来的面试中出现。网络前端面试关于VUE的面试问题
1对MVC、MVP、MVVM的理解
MVC模式意味着软件可以分为三个部分。
视图:用户界面。
控制器:业务逻辑。
型号:数据保存。
各部分之间的沟通如下。视图向控制器发送指令。控制器完成业务逻辑后,它要求模型改变它的状态。模型向视图发送新数据,用户得到反馈。所有通信都是单向的。
在MVP模式下,控制器被重命名为Presenter,通信方向被更改。各部分之间的通信是双向的。视图和模型之间没有联系,两者都是通过演示者传递的。视图很薄,没有部署业务逻辑,称为“被动视图”,即没有主动性,而演示者很厚,所有逻辑都部署在那里。MVVM模式将演示者更改为视图模型,这与MVP模式基本相同。唯一不同的是,它采用了数据绑定:视图的变化自动反映在视图模型中,反之亦然。Angular和Ember都采用这种模式。
如何理解Vue异步执行DOM更新?
Vue异步执行DOM更新。只要观察到数据变化,Vue就会打开一个队列,缓冲同一事件周期内的所有数据变化。如果同一个观察器被触发多次,它将只被推入队列一次。这种在缓冲过程中移除重复数据的方法对于避免不必要的计算和DOM操作非常重要。然后,在下一个事件循环中,Vue刷新队列并执行实际的工作。Vue试图在内部将本机Promise.then和MessageChannel用于异步队列。如果执行环境不支持,将使用setTimeout。例如,当您设置vm.someData = 'new value '时,组件不会立即重新呈现。
当队列被刷新时,当事件循环队列被清除空时,组件将在下一个刻度被更新。在大多数情况下,我们不需要关心这个过程,但是如果你想在DOM状态更新后做点什么,那可能就比较棘手了。虽然Vue.js通常鼓励开发人员以“数据驱动”的方式思考,避免与DOM直接接触,但有时我们会这样做。要在数据更改后等待Vue完成DOM更新,可以在数据更改后立即使用Vue.nextTick。这样,在DOM更新完成后,就会调用回调函数。
3.深度响应原理如何跟踪变化
当你把一个普通的Java对象传递给Vue实例的数据选项时,Vue会遍历这个对象的所有属性,并使用Object.defineProperty把这些属性全部传递给getter/setter。
Object.defineProperty是ES5中不能填补的特性,这也是Vue不支持IE8和更早版本浏览器的原因。这些getter/setter对用户来说是不可见的,但在内部,它们让Vue跟踪依赖关系,并在属性被访问和修改时通知更改。这里需要注意的问题是浏览器控制台打印数据对象时getter/setter的格式不同,所以可能需要安装vue-devtools来获得更友好的检查界面。
每个组件实例都有一个对应的观察器实例对象,该对象在组件呈现过程中将属性记录为依赖项,然后当调用依赖项的setter时,它会通知观察器重新计算,以便更新其关联的组件。观察者订阅可观察对象,当可观察对象发布事件时,直接调度观察者的行为,所以观察者和可观察对象之间实际上存在依赖关系。
说说对虚拟DOM算法的理解。
包括几个步骤:
1.用Java对象结构表达DOM树的结构,然后用这个树构建一个真实的DOM树,并插入到文档中;
2.当状态发生变化时,重建一棵新的对象树,然后将新树与老树进行比较,记录两棵树之间的差异;
3.将步骤2中记录的差异应用于步骤1中构建的真实DOM树,视图将被更新。本质上,虚拟DOM是JS和DOM之间的缓存。可以跟CPU和硬盘比。既然硬盘这么慢,我们就在它们之间加一个缓存。既然DOM这么慢,我们就在JS和DOM之间加一个缓存。CPU只对虚拟DOM进行操作,最后将更改写入硬盘。
欢迎大家在评论区评论留言,边肖会及时解答你的疑问
1.《vue面试题及答案2019 web前端面试中关于VUE的面试题(含答案)》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《vue面试题及答案2019 web前端面试中关于VUE的面试题(含答案)》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/1733089.html