生命周期
响应式原理
vue的响应式原理是使用了Object.definePrototype对data的属性进行劫持,使用get进行依赖收集,使用set进行派发更新。
data有的是对象有的是函数
如果是以对象的形式显示,那么多个组件之间就会公用这个data的引用,互相之间会影响,为了避免这种影响则使用函数
基本指令
v-if、v-show、v-for、v-on、v-bind、v-text、v-html
v-show和v-if的区别
两个都是显示显示和隐藏,不同的时v-show只是display:block/none的切换,而v-if是组件的创建和销毁,所以开销比较大,对于需要频繁显示隐藏的推荐使用v-show
v-model原理
父组件如何实现v-model
computed和watch
都是监听值得变化,不同的是computed会有缓存的效果,在数据不发生变化的时候就不会被触发,而watch不管有没有被改变都会被触发。
自定义过滤器
Vue.filter(filterName, fn)
自定义指令
Vue.directive(directiveName, fn)
插槽
vue中的动画
v-html 有什么作用?可能会导致什么问题
v-html的作用相当于innerHTML的作用,可能会出现xss攻击问题
vue模板编译的原理
keep-alive
keep-alive是vue的内置抽象组件,不会再页面中渲染出来;用来缓存组件,有两个属性include和exclude,exclude的级别比include高,它有自己的生命周期,activated:组件激活,deactivated:组件没激活
vue组件通信方式
父->子组件:props
子->父:$emit
任意组件:vuex、EventBus
vue组件按需加载的方式
import
require
require.ensure:webpack技术
nextTick
请简单实现双向数据绑定mvvm
const data = {};const input = document.getElementById('input');Object.defineProperty(data, 'text', {set: function(value) {input.value = valuethis.value = value;}})input.onchange = function(e) {data.text = e.target.value;}
