timg.jpeg

生命周期

响应式原理

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不管有没有被改变都会被触发。

自定义过滤器

  1. Vue.filter(filterName, fn)

自定义指令

  1. 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

  1. const data = {};
  2. const input = document.getElementById('input');
  3. Object.defineProperty(data, 'text', {
  4. set: function(value) {
  5. input.value = value
  6. this.value = value;
  7. }
  8. })
  9. input.onchange = function(e) {
  10. data.text = e.target.value;
  11. }

实现一个最小化的vue响应式示例

vue-router有哪些钩子函数

vuex

vuex语法糖

diff算法