Vue面试题

1.v-if和v-show的区别?
    都可以控制元素的显示和隐藏
    1.v-show时控制元素的display值来让元素显示和隐藏,v-if显示隐藏时把Dom元素整个添加和删除
    2.v-if有一个局部编辑/卸载的过程,切换这个过程中会适当的销毁和重建内部的事件监听和子组件;v-show只是简单的css切换
    3.v-if才是真正的条件渲染;v-show从false变成true的时候不会触发组件的生命周期,v-if会触发生命周期

2.如何理解MVVM的?
    是Model-View_ViewModel的缩写。前端开发的架构模式
    M:模型,对应的就是data的数据
    V:视图,用户界面,Dom
    VM:视图模型 :Vue的实例对象,连接View和Model的桥梁
    核心是提供对View和ViewModel的双向数据绑定,当数据改变的时候,ViewModel能监听到数据的变化,自动更新视图,当用户操作视图的时候,ViewModel也可以监听到视图的变化,然后通知数据进行改动,这就实现了双向数据绑定
    View Model通过双向绑定把View和Model连接起来,它们之间的同步是自动的,不需要干涉,所以我们只需要关注业务逻辑即可,不需要操作Dom,同时也不需要关注数据的状态问题,因为他是由MVVM统一管理

3.v-for中的key值的作用是什么?
    key属性是Dom元素的唯一标识
    作用:
        1.提高虚拟Dom的更新
        2.若不设置key,可能触发一些bug
        3.为了触发过渡效果
4,说一下你对vue生命周期的理解
    组件从创建到销毁的过程就是它的生命周期
    创建
        beforeCreat
            在这个阶段属性和方法都不能使用
        created
            在这里实例创建完成之后,在这里完成了数据监测,可以使用数据,修改数据,不会触发updated,也不会更新视图
    挂载
        beforeMount
            完成了模板的编译,虚拟Dom也完成创建,即将渲染,修改数据,不会触发updated
        Mounted
            把编译好的模板挂载到页面,这里可以发送异步请求也可以访问Dom节点
    更新
        beforeUpdate
            组件数据更新之前使用,数据是新的,页面上的数据时旧的,组件即将更新,准备渲染,可以改变数据
        updated
            render重新做了渲染,这时数据和页面都是新的,避免在此更新数据
    销毁
        beforeDestroy
            实例销毁前,在这里改可以用,可以清除定时器等
        destroyed
            组件已经被销毁了,全部都销毁
    使用了keep-alive时多出两个周期:
        activited
            组件激活时
        deactivited
            组件被销毁时

5.在created和mounted去请求数据,有什么区别
    created:在渲染前调用,通常先初始化属性,然后做渲染
    mounted:在模块渲染完成后,一般都是初始化页面后,在对元素节点进行操作
            在这里请求数据可能出现闪屏的问题,created不会。
    一般用created比较多
    请求的数据对Dom有影响,那么使用created
    如果请求的数据对Dom无关,可以放在mounted
posted @ 2023-06-17 23:56  GLin生活派  阅读(35)  评论(0)    收藏  举报