VUE.JS面试题总结

一、vue的相关理论
1、对于Vue是一套渐进式框架的理解
渐进式指的就是弱主张,开发者完全可以在原有大系统上面,把一两个vue组件引用实现功能,当jQurey用;也可以整个用他的全家桶开发,当Angular用;
2、vue.js的两个核心
数据驱动(双向绑定)和组件化。
3、vue的生命周期钩子
记住vue实例初始化后是beforeCreate。
初始化注入和校验是created
vue实例挂载完el是mounted
4、vue 的双向绑定的原理是什么?
vue数据双向绑定是通过数据劫持结合发布者-订阅者模式的方式来实现的。
实现一个监听器Observer,用来劫持并监听所有属性,如果有变动的,就通知订阅者。
实现一个订阅者Watcher,可以收到属性的变化通知并执行相应的函数,从而更新视图。
实现一个解析器Compile,可以扫描和解析每个节点的相关指令,并根据初始化模板数据以及初始化相应的订阅器。

二、vue语法
1、v-if和v-show的区别
实现原理不同,v-if判断是否在Dom书上删除或创建元素节点。v-show是元素已经渲染,通过css的display来控制显隐。
频繁切换用v-show。
2、vue常用的修饰符
①键盘、鼠标事件监听.enter .space .left等
②防止事件冒泡.stop,事件只触发一次.once,激活事件.native
③子组件修改父组件属性,父组件传值使用.sync
④过滤空格.trim
3、v-on可以绑定多个事件,一个事件可绑定多个方法。
4、vue中key的作用
使用key来给每个节点做一个唯一标识。
key的作用主要是为了高效的更新虚拟DOM。另外vue中在使用相同标签名元素的过渡切换时,也会使用到key属性,其目的也是为了让vue可以区分它们,
否则vue只会替换其内部属性而不会触发过渡效果。
5、v-for的优先级大于v-if
6、vue常用指令
v-if、v-for、v-on、v-model、v-bind、v-once、v-else、v-text、v-html、v-slot
7、如果data是对象,多个data指向一个内存地址,无法独立维护。
由于js只有函数构成作用域,为保证每个实例都有独立作用域。

三、vue组件知识
1、子组件调用父组件的方法
①this.emit向父组件触发事件,父组件监听该方法this.emit('fatherMethod'); ③子组件在props定义方法,父组件把方法传入到子组件,子组件直接使用就行 2、父组件调用子组件的方法 父组件引用子组件是使用ref属性<children ref=, 调用时直接this.">refs.child.method
3、父组件给子组件传值
a.父组件在引用子组件的时候使用v-bind :name="老杨" :age="30"传递属性信息
b.子组件通过props:['name','age']接收值。
4、子组件给父组件传值
a.在子组件中使用this.emit('事件名=postdata','数据')触发一个自定义的事件,事件名自定义 b.父组件在应用子组件的地方@postdata=emit('update:name','alice')。
方法2:可以将父组件的数据包装成对象,然后在组件中修改对象的属性(因为对象是引用类型,指向同一个内存空间)
7、组件间传值
①vue-router跳转传值
②本地缓存localStorge
③使用vuex数据状态管理
④使用eventBus。首先定义evenBus.js并挂载到Vue实例上,使用的子组件引入js
子组件A发布(声明)事件(通常在created或mounted中):
created() {
     eventBus.on('getTarget', target => {       console.log(target);      });    } 子组件B订阅(触发)事件: methods: {     addCart(event) {       eventBus.emit('getTarget', event.target);
     }
   }
8、动态挂载切换组件

// 组件名称是 字符串
Vue.component('login', {
template: '

登录组件

'
})

    Vue.component('register', {
        template: '

注册组件

' })

通过comName变量的值是login还是register,来切换组件内容。
9、keep-alive内置组件的作用
保留组件状态,避免重新渲染。比如点击列表操作进入页面详情,详情页返回时,不需要重新刷新列表,则可对列表组件进行缓存,这样就可以从缓存中渲染,而不是重新渲染。
两个属性:(正则或字符串)include:匹配才会缓存。exclude:匹配不会被缓存。
一般配合router-view使用。所有路径下的组件都会被缓存。

四、vue路由router
五、vue状态管理vuex
1、vuex有几种特性
五驾马车:state、getters、mutations、actions、module
2、vuex中state的特性
①store就是个仓库,其中state就是数据记录的地方
②state中的数据是响应式的,数据的变化,任何引用的都会跟着变化
③mapstate是vuex针对state操作的辅助函数,把全局state和getters银蛇到当前组件commputed属性中,方便使用。
3、vuex的getters特性
①getters可以对state数据进行运算
②通过getters的function对state数据进行运算,有助于state数据的复用,可以传参。
4、vuex的mutations特性
①用于修改state的数据
②mutations中只能使用同步函数,而action选项中可以使用异步函数。

你可能感兴趣的:(VUE.JS面试题总结)