面试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能给我们带来更大的惊喜.

  Proxy算是这次Vue 3.0 最大的亮点,它不仅取代了Vue 2.0 的 Object.defineProperty 方法并且组建生成增快 100%还有就是快一倍 / 减少一般的内存使用

 

posted @ 2020-06-28 16:50  edczjw  阅读(119)  评论(0编辑  收藏  举报