美文网首页
vue面试常见问题汇总

vue面试常见问题汇总

作者: 暴走的毛驴 | 来源:发表于2020-02-14 14:23 被阅读0次

https://www.cnblogs.com/AlbertP/p/10754880.html

v-show 与 v-if 区别

v-show是css切换,v-if是完整的销毁和重新创建。
使用频繁切换时用v-show,运行时较少改变时用v-if
v-if=‘false’ v-if是条件渲染,当false的时候不会渲染


计算属性和 watch 的区别

计算属性是自动监听依赖值的变化,从而动态返回内容,监听是一个过程,在监听的值变化时,可以触发一个回调,并做一些事情。
所以区别来源于用法,只是需要动态值,那就用计算属性;需要知道值的改变后执行业务逻辑,才用 watch,用反或混用虽然可行,但都是不正确的用法。
说出一下区别会加分
computed 是一个对象时,它有哪些选项?
computed 和 methods 有什么区别?
computed 是否能依赖其它组件的数据?
watch 是一个对象时,它有哪些选项?

有get和set两个选项
methods是一个方法,它可以接受参数,而computed不能,computed是可以缓存的,methods不会。
computed可以依赖其他computed,甚至是其他组件的data
watch 配置
handler
deep 是否深度
immeditate 是否立即执行
总结

当有一些数据需要随着另外一些数据变化时,建议使用computed。
当有一个通用的响应数据变化的时候,要执行一些业务逻辑或异步操作的时候建议使用watcher


事件修饰符

绑定一个原生的click事件, 加native,
其他事件修饰符
stop prevent self

组合键
click.ctrl.exact 只有ctrl被按下的时候才触发


你知道双向绑定和单向数据流吗,vue里面是怎么做的?
  • vue是单向数据流,不是双向绑定
  • vue的双向绑定不过是语法糖 .sync v-model
  • Object.definePropert是用来响应式更新的
vue中不同层级的组件共享数据有哪些方案?
  • vuex
  • prop/ $emit
  • attr/listener
  • provider/ inject
  • event bus

懒加载方案?

滚动到当前页面才加载
addEventListener(scroll,handle)
getBoundingClientRect()
new Image()
Throttle or debounce


修饰符.passive

如何检测元素出现在视窗中?

intersectionObserver API


vue中el解析
未命名.png
  • 如果存在 render 函数或 template 属性,则挂载元素会被 Vue 生成的 DOM 替换;否则,挂载元素所在的 HTML 会被提取出来用作模版
  • el不能挂载到body或者html元素上,因为最后渲染的时候vue会把挂载的元素被template或者render替换掉。W3C规定页面元素一定要包括<html>和<body>标签,如果挂载到这两个元素上,页面没<html>标签或者<body>标签
  • el是Vue实例的挂载目标。在实例挂载之后,元素可以用 vm.$el 访问。

示例1: render 函数渲染的 DOM 替换 <div id="ppp"></div>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <div id="ppp"></div>
  </body>
</html>

new Vue({
  el: '#ppp',
  router,
  store, 
  render: h => h(App)
})

示例2:字符串模版替换 <div id="ppp"></div>

new Vue({
  el: '#ppp',
  router,
  components: { App },
  template: '<App/>'
})

示例3:手动挂载且不存在render函数和template属性

new Vue({
  router,
  store,
}).$mount('#ppp')

vue生命周期

https://blog.csdn.net/weixin_34301132/article/details/87964549

      initLifecycle(vm);
      initEvents(vm);
      initRender(vm);
      callHook(vm, 'beforeCreate');
      initInjections(vm); // resolve injections before data/props
      initState(vm);
      initProvide(vm); // resolve provide after data/props
      callHook(vm, 'created');
  • beforeCreate
    在数据观测和初始化事件还未开始
  • created
    完成数据观测,属性和方法的运算,初始化事件,$el属性还没有显示出来
  • beforeMount
    在挂载开始之前被调用,相关的render函数首次被调用。实例已完成以下的配置:编译模板,把data里面的数据和模板生成html。此时还没有挂载html到页面上。
    -mounted
    在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用。实例已完成以下的配置:用上面编译好的html内容替换el属性指向的DOM对象。完成模板中的html渲染到html页面中。此过程中进行ajax交互。
    -beforeUpdate
    在数据更新之前调用,发生在虚拟DOM重新渲染和打补丁之前。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程。
    -updated
    在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。调用时,组件DOM已经更新,所以可以执行依赖于DOM的操作。然而在大多数情况下,应该避免在此期间更改状态,因为这可能会导致更新无限循环。该钩子在服务器端渲染期间不被调用。
    -beforeDestroy
    在实例销毁之前调用。实例仍然完全可用。
    -destroyed
    在实例销毁之后调用。调用后,所有的事件监听器会被移除,所有的子实例也会被销毁。该钩子在服务器端渲染期间不被调用。
Vue数据劫持

相关文章

  • vue面试常见问题汇总

    https://www.cnblogs.com/AlbertP/p/10754880.html v-show 与 ...

  • 面试问题(七)

    面试常见问题汇总 最后附上部分常见面试题汇总,虽然不能完全覆盖所有面试官的问题,但相信在思路和角度方面能够反映大部...

  • 17.拓展:Vue.js 面试、常见问题答疑

    拓展:Vue.js 面试、常见问题答疑 在过去的很多面试中,我会经常问候选人一些关于 Vue.js 的问题。这些问...

  • 面试汇总vue

    vue生命周期 beforeCreate 在实例初始化之后,数据观测(data observer) 和 event...

  • vue面试汇总

    1.vue数据双向绑定的原理 视图更新数据模型:通过事件对象改变数据模型;比如:input绑定输入事件监听修改da...

  • java基础面试题

    java基础面试常见问题汇总 面向对象的特征有哪些方面? Object类中的方法 ==和equals方法的区别 八...

  • 2019前端面试题汇总(主要为Vue)

    摘要: 经典面试题。 原文:2019前端面试题汇总(主要为Vue) 作者:前端小酱 Fundebug经授权转载,版...

  • 2019前端面试题汇总(主要为Vue)

    摘要: 经典面试题。 原文:2019前端面试题汇总(主要为Vue) 作者:前端小酱 Fundebug经授权转载,版...

  • 面试常见问题 - 目录

    面试常见问题01 - C++相关(施工ing) 面试常见问题02 - 算法与数据结构(施工ing) 面试常见问题0...

  • 面试常见问题汇总

    基础篇 Nginx 作用是什么,为什么这么高效: 反向代理,主进程接收请求,工作进程异步非租塞的处理 负载均衡算法...

网友评论

      本文标题:vue面试常见问题汇总

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