美文网首页
常见的几个面试题

常见的几个面试题

作者: 有一个程序媛 | 来源:发表于2019-12-01 15:59 被阅读0次

    1.HTTP协议客户端和服务器交互的三次握手

    客户端对服务器说:要给你发送数据,可以吗?

    服务器对客户端说:可以的,你什么时候发?

    客户端对服务器说:马上,稍等!

    开始客户端向服务器发送请求了

    2.v-if和v-show有什么区别?

    相同点: 两者都是在判断DOM节点是否要显示

    不同点:

    a.实现方式: v-if是根据后面数据的真假值判断直接从Dom树上删除或重建元素节点。  v-show只是在修改元素的css样式,也就是display的属性值,元素始终在Dom树上。

    b.编译过程:v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;  v-show只是简单的基于css切换;

    c.编译条件:v-if是惰性的,如果初始条件为假,则什么也不做;只有在条件第一次变为真时才开始局部编译; v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素始终被保留;

    d.性能消耗:v-if有更高的切换消耗,不适合做频繁的切换;  v-show有更高的初始渲染消耗,适合做频繁的额切换;

    3.vue生命周期钩子函数有哪些?

    beforeCreated:$el,data :undefined

    created: data: 有,$el:undefined

    beforeMount:vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点,data.message还未替换

    mounted:vue实例挂载完成,data.message成功渲染

    当data变化时,会触发beforeUpdate和updated方法

    在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在

    3.vue 从初始化页面--修改数据--刷新页面 UI 的过程?

    当 Vue 进入初始化阶段时,一方面 Vue 会遍历 data 中的属性,并用 Object.defineProperty 将它转化成 getter/setter 的形式,实现数据劫持(暂不谈 Vue3.0 的 Proxy);另一方面,Vue 的指令编译器 Compiler 对元素节点的各个指令进行解析,初始化视图,并订阅 Watcher 来更新试图,此时 Watcher 会将自己添加到消息订阅器 Dep 中,此时初始化完毕。

    当数据发生变化时,触发 Observer 中 setter 方法,立即调用 Dep.notify(),Dep 这个数组开始遍历所有的订阅者,并调用其 update 方法,Vue 内部再通过 diff 算法,patch 相应的更新完成对订阅者视图的改变。

    相关文章

      网友评论

          本文标题:常见的几个面试题

          本文链接:https://www.haomeiwen.com/subject/vryfpctx.html