vue

1、vuex思想

  vuex的思想是  当我们在页面上点击一个按钮,它会触发(dispatch)一个action,action随后会执行(commit)一个mutation,mutation立即改变state,state改变以后,我们的页面会state获取数据,页面发生了变化。Store对象,包含我们谈到的所有内容,action,state,mutation

2、说一下vue的slot插槽

  插槽就是vue是实现的一套内容分发的API,将插槽元素作为承载分发内容的出口。在组件模板中默认占一个位置,当使用组件标签的时候,组件标签的内容会自动替换的内容,slot中可以设置一些默认的内容,如果传递了内容则会被替换掉,如果没有名字的标签会默认放在default中

3、对vue中nextTick的理解

   vue中nextTick可以拿到更新后的DOM元素,如果在mouted下不能准确拿到DOM元素,可以使用nextTick,在vue生命周期created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中

4、组件之间的传递

    父传子:首先在子组件加一个v-bind:自定义属性,等于父级的数据,子组件通过props接受数据

   子传父:在子组件上板顶一个自定义事件,并且传入父级的“事件”处理函数,在子组件内部使用$emit监听这个自定义事件,this.$emit(‘自定义事件名’,参数)

5、vue中key和is的作用

   使用key,vue会基于key的变化重新排列元素顺序,并且移除key不存在的元素。可以做优化处理。is可以扩展原生html元素,也可以动态绑定组件

6、说一下vue的生命周期,当使用keep-alive属性时,会增加哪两个生命周期

    创建前/后 beforeCreate/created   在beforeCreated阶段,vue实例的挂载元素el和数据对象data都为undefined,还未初始化;在created阶段,vue实例的数据对象data有了,el还没有。

    载入前/后 beforeMount/mounted       在beforeMount阶段,vue实例的el和data都初始化了,但还是挂在之前为虚拟的dom节点,data尚未替换;在mounted阶段,vue实例挂载完成,data成功渲染。

    更新前/后 beforeUpdate/updated    当data发生变化时,会触发 beforeUpdate/updated,不常用

    销毁前/后 beforeDestor/destoryed  beforeDestory是在实例销毁前触发,一般要在这里通过removeEventListener解除手动绑定的事件;执行destoryed方法后,vue实例已经解除了事件监听以及dom的绑定,但是dom结构仍然存在

       在被keep-alive包含的路由组件中,会多出两个生命周期:activated和deactivated

  7、说下vue的底层原理

  Vue的模式是m-v-vm模式,即(model-view-modelView),通过modelView作为中间层,进行双向数据的绑定与变化

  1)通过建立虚拟dom树document.createDocumentFragment(),方法创建虚拟dom树

  2)一旦被监测的数据改变,会通过Object.defineProperty定义的数据拦截,截取到数据的变化

  3)截取到的数据变化,从而通过订阅——发布者模式,触发Watcher(观察者),从而改变虚拟dom的中的具体数据

  4)最后通过更新虚拟dom的元素值,从而改变最后渲染dom树的值,完成双向绑定

posted @ 2019-07-22 14:31  准备养老的少女  阅读(138)  评论(0编辑  收藏  举报