千锋教育web前端高频面试题视频教程,kerwin大话前端面试秘籍(附答案)

路由懒加载是干什么的?
路由中通常会定义很多不同的页面,一般放在js文件。但是页面这么多放在一个js文件中,必然会造成这个页面非常大,如果一次性从服务器请求下来这个页面,可能需要花费一定时间,甚至用户电脑上出现短暂空白情况,为避免这种情况,使用路由懒加载。
什么是具名插槽与匿名插槽?
具名插槽:在子组件中定义插槽时,给对应的插槽分别起个名字,方便后边插入父组件将内容根据name来填充对应的内容。
匿名插槽:又名默认插槽,当slot没有指定name属性值的时候一个默认显示的插槽,一个组件内只有有一个匿名插槽。
Vue和React中diff算法区别?
vue的diff算法:vue的diff算法在对新老虚拟daom进行对比时,是从节点的两侧向中间对比;如果节点的key值与元素类型相同,属性值不同,就会认为是不同节点,就会删除重建。
react的diff算法:react的diff算法在对新老虚拟dom进行对比是,是从节点左侧开始对比,就好比将新老虚拟dom放入两个栈中,一对多依次对比;如果节点的key值与元素类型相同,属性值不同,react会认为是同类型节点,只是修改节点属性。
axios是什么?
Axios是一个基于promise的HTTP库,类似于jQuery的ajax,用于http请求。可以应用于浏览器端和node.js,既可以用于客户端,也可以用于node.js编写的服务端。
为什么要设置key值,可以index吗?为什么不能?
key值的作用
元素key属性的作用是用于判断元素是新创建的还是被移动的元素,从而减少不必要的Diff。
一旦组件加上了key值,在渲染时对该组件的身份进行校验,首先校验新旧组件的key值是不是一致,不一致的话,该组件直接销毁,然后在新建该组件;如果一致,则比较组件的属性是否发生变化,如果发生变化,则采用diff算法进行对比,然后得出差异对象,如果属性没发生变化,则认为该组件不需要改变。
为什么最好不要使用index作为key?
若数组的内容只是作为纯展示,而不涉及到数组的动态变更,其实是可以使用index作为key的。
如果涉及到数组的动态变更,例如数组新增元素、删除元素或者重新排序等,这时index作为key会导致展示错误的数据。
什么时候使用vuex?
当你法很好进行数据管理的时候,你才需要用Vuex
具体来说的话,大体来说分为两类:
1.当一个组件需要多次派发事件时
原因很简单,如果它多次派发事件,必然有其它组件进行接收并调用。为了以后的方便维护,就需要用到vuex了,尤其是中大型项目。
2.跨组件共享数据、跨页面共享数据
简单来说,共享数据,只要看到这种字眼就要想到vuex了。需要共享的数据,就需要保存到vuex中。
什么是Vue.nextTick()?
nextTick 是 Vue.js 中的一个方法,用于在 DOM 更新之后执行一段代码。它是 Vue.js 中的异步更新机制之一,用于在下一次 DOM 更新周期之后执行回调函数,确保 DOM 更新完毕后再执行代码,以避免出现操作未更新完的 DOM 元素的问题。
nextTick 可以在 Vue.js 的组件内部使用,用于在 DOM 更新周期之后执行一些操作,例如在修改数据后立即获取更新后的 DOM 元素的属性或进行其他 DOM 操作。
作用:
nextTick 主要用于以下场景:
当你修改了 Vue.js 实例中的数据后,想要立即获取更新后的 DOM 元素的属性或进行其他 DOM 操作。
当你想要在 DOM 更新之后执行一段代码,例如在 DOM 更新后执行一些异步操作。
原理:
Vue.js 通过异步更新机制来实现性能优化,将多次数据变更合并为一次 DOM 更新,从而提高性能。nextTick 利用了 Vue.js 的异步更新机制,在下一次 DOM 更新周期之后执行回调函数,以确保 DOM 更新完毕后再执行代码。