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树的值,完成双向绑定