您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

vue面试题

vue面试题

一、MVVM

MVVM是Model-View-ViewModel的简写

  1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
  3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
  4. 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
MVC

优点:
1、把业务逻辑全部分离到Controller中,模块化程度高。当业务逻辑变更的时候,不需要变更View和Model,只需要Controller换成另外一个Controller就行了(Swappable
Controller)。
2、观察者模式可以做到多视图同时更新。
缺点:
1、Controller测试困难。因为视图同步操作是由View自己执行,而View只能在有UI的环境下运行。在没有UI环境下对Controller进行单元测试的时候,Controller业务逻辑的正确性是无法验证的:Controller更新Model的时候,无法对View的更新操作进行断言。

2、View无法组件化。View是强依赖特定的Model的,如果需要把这个View抽出来作为一个另外一个应用程序可复用的组件就困难了。因为不同程序的的Domain
Model是不一样的

vue生命周期

vue实例从创建到销毁的过程

有八个钩子函数 分别对应的是 创建-挂载-更新-销毁

创建

beforecreate 数据初始化,会定义data数据方法和事件,并完成数据劫持observe以及给组件实例配置watcher观察者实例。这样后续数据发生变化时才能感知到数据变化。
created 最早可以操作data中的数据还有methods下的方法 在这里可以调用方法进行数据请求 created的时候数据已经和data属性进行绑定

挂载

beforemount 调用后会产生一个虚拟dom (用于后续数据发生变化时,新老虚拟dom对比计算)

mounted 最早可以操作dom的,因为这个时候dom已经渲染完成了

更新

beforemount 调用后会产生一个虚拟dom (用于后续数据发生变化时,新老虚拟dom对比计算)

mounted 最早可以操作dom的,因为这个时候dom已经渲染完成了

销毁

beforedestroy 实例销毁前,也就是说在这个函数内,你还是可以操作实例的
destroyed 释放缓存 销毁完毕。 解除各种数据引用,移除事件监听,删除组件_watcher,删除子实例,删除自身self等, 比如定时器。

双向数据绑定

双向数据绑定的核心思想是通过Object.defineProperty()实现, 用数据劫持结合发布者-订阅者模式的方式

利用 observer来实现对每个vue中的data中定义的属性循环,以便利用其中的setter和getter,然后通知订阅者,订阅者会触发它的update方法,对视图进行更新

get就是在读取name属性这个值触发的函数,set就是在设置name属性这个值触发的函数

watcher负责数据监听,当数据发生改变通知订阅者,调用视图更新函数更新视图

订阅/发布者模式

发布者就是通过 事件触发机制 发布任务

订阅者通过监听机制 监听任务执行 过程的变化

订阅发布模式(又称观察者模式)定义了一种一对多的关系,让多个观察者同时监听某一个主题对象,这个主题对象的状态发生改变时就会通知所有观察者对象。
发布者发出通知 => 主题对象收到通知并推送给订阅者 => 订阅者执行相应操作

文档碎片

文档碎片不放在DOM树中,而是放在内存中,就是将节点替换插入文档碎片中的时候不会引起回流重绘,如果插入大量节点,一个个插入必然会引起大量的回流和重绘,先放到文档碎片中,再将文档碎片插入,可以减少回流重绘,提高性能

document.createDocumentFragment 就可以用于暂时存放创建的得dom元素

将需要的添加的大量元素先添加到文档碎片中再将文档碎片添加到需要查入的位置 减少了dom操作


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进