面试2
1 html 和 xhtml 的区别 ?
(1) 其基础语言不同
1、XHTML是基于可扩展标记语言(XML)。
2、HTML是基于标准通用标记语言(SGML)。
(2) 语法严格程度不同
1、XHTML语法比较严格,存在DTD定义规则。
2、HTML语法要求比较松散,这样对网页编写者来说,比较方便。
(3)、可混合应用不同
1、XHTML可以混合各种XML应用,比如MathML、SVG。
2、HTML不能混合其它XML应用
2 vue中 key 作用?
key 主要体现在 vue 的 虚拟DOM 上,使用key 它会基于key 的变化对元素进行重新排序,并且会移除不存在key 的元素,有相同父元素的子元素必须有独特的key ,重复的key 会造成渲染错误。最常见的用例与 v-for 结合使用。
3 watch 与 computer 的不同?
watch 与 computer 都是以vue 的依赖追踪为基础。
computer 计算属性,计算的结果会被缓存,当需要它发生改变时它才会改变。
watch 偏向于观察,监听,它的属性是一个对象,键是我们要监听的表达式,值是对应的回调函数。每次发生变化时(表单,路由)vue 在实例化时都会调用 vue.watch() 的方法,重新遍历watch对象
4 谈谈你在工作中用vue 遇到过的问题?
(1)、mounted钩子函数中请求数据导致页面闪屏问题
其实就是加载时机问题,放在created里会比mounted触发早一点,如果在页面挂载完之前请求完成的话就不会看到闪屏了
(2) . 在computed 中修改data 里变量的值
问题:computed里是不能直接修改data 里变量的值,否则在git commit 时会报错
解决:使用computed 里的get和set 来进行读取与设置
(3). computed 里监听数组的变化
问题:computed里返回一个数组。但是在进行交换数组里两个元素的位置不能触发computed的更新。
解决: 使用this.$set 修改数组的值。this.$set(arr,index,val),使用$set可实时更新
(4), transition-groups使用时,key 值坑
问题:之前单纯的是直接将循环出的index 赋值给key ,但是在交换元素位置出现错乱的问题, 原因是交换位置后,元素的key 发生了变化
解决: 给key 设置一个不会因为位置变化而变化的值,比如ID
5 vue 2.0 与 3.0 的 区别?
1. 默认进行懒观察(lazy observation)。在 2.x 版本里,不过数据多大,都会在一开始就为其创建观察者。当数据很大时,这可能会在页面载入时造成明显的性能压力。3.x 版本,只会对「被用于渲染初始可见部分的数据」创建观察者,而且 3.x 的观察者更高效。
2. 更精准的变更通知。比例来说:2.x 版本中,你使用 Vue.set 来给对象新增一个属性时,这个对象的所有 watcher 都会重新运行;3.x 版本中,只有依赖那个属性的 watcher 才会重新运行。
暂时来讲,Vue 3.0 和 Vue 2.0 中间虽然api没有什么特别大的变化,但是相对于原理而言Vue 3.0 使用了TypeScript进行重构之后各方面的性能提升都有了一个重大突破(相对于2.0来说),另外这个工作已近从2.6版本渐渐开始了,虽然提升效果不是很明显,但是我相信Vue3.0能给我们带来更大的惊喜.