Vue面试题

1. 什么是MVVM?

MVVM是是Model-View-ViewModel的缩写,Model代表数据模型,定义数据操作的业务逻辑,View代表视图层,负责将数据模型渲染到页面上,ViewModel通过双向绑定把View和Model进行同步交互,不需要手动操作DOM的一种设计思想

2. 怎么定义vue-router的动态路由?怎么获取传过来的动态参数?

在router目录下的index.js文件中,对path属性加上/:id。 使用router对象的params.id

3. vuex是什么?怎么使用?哪种功能场景使用它?

vue框架中状态管理。在main.js引入store,注入。新建了一个目录store,…… export 。场景有:单页应用中,组件之间的状态。音乐播放、登录状态、加入购物车

4. keep-alive的作用是什么,如何使用?

包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免重新渲染;

缓存: <keep-alive include=”组件名”></keep-alive>
不缓存:<keep-alive exclude=”组件名”></keep-alive>

5. v-show和v-if指令的共同点和不同点?

v-show指令是通过修改元素的displayCSS属性让其显示或者隐藏,
v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果

6. $ route和$ router的区别

$ route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。而$router是“路由实例”对象包括了路由的跳转方法,钩子函数等

7. Vue的生命周期

Vue的生命周期图解

什么是生命周期?

vue实例从创建到销毁的过程,就是生命周期,从开始创建、初始化数据、编译模版、挂在DOm→渲染、更新→渲染、销毁等一系列过程,称之为vue的生命周期

vue生命周期的作用是什么?

vue的生命周期中有很多个事件钩子,让我们在控制整个vue实例的过程时更容易形成好的逻辑

vue生命周期总共有几个阶段?

分为8个阶段,创建前/创建后、载入前/载入后、更新前/更新后、销毁前/销毁后

第一次页面加载会触发哪几个钩子

会触发beforeCreate、created、beforeMount、mounted

DOM渲染在哪个周期中就已经完成?

DOM渲染在mounted中就已经完成了

8. Vue组件间的参数传递

父组件传给子组件:子组件通过props方法接受数据
子组件传给父组件:$emit方法传递
非父子组件间的数据传递,兄弟组件传值
创建一个事件中心,相当于中转站,可以用来传递事件和接收事件。项目比较小时,用这个比较合适

9. 计算属性 computed 和事件 methods 有什么区别

我们可以将同一函数定义为一个 method 或者一个计算属性。对于最终的结果,两种方式是相同的。
不同点:
computed:计算属性是基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求值。
method:只要发生重新渲染, method 调用总会执行该函数。

10. 如何让css只在当前组件起作用

在style标签中写入scoped即可,例如<style scoped></style>

11. 谈谈对Vuex的理解

Vuex:专门为vue.js应用程序开发的状态管理模式,它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证以一种可预测的方式发生变化
state
Vuex 使用单一状态树,即每个应用将仅仅包含一个store 实例,但单一状态树和模块化并不冲突。存放的数据状态,不可以直接修改里面的数据。
mutations
mutations定义的方法动态修改Vuex 的 store 中的状态或数据。
getters
类似vue的计算属性,主要用来过滤一些数据。
action
actions可以理解为通过将mutations里面处里数据的方法变成可异步的处理数据的方法,简单的说就是异步操作数据。view 层通过 store.dispath 来分发 action。
在这里插入图片描述

12. vue的双向绑定原理

vue.js 则是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。

posted @ 2020-02-18 15:16  CV攻城狮  Views(101)  Comments(0Edit  收藏  举报