一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。
以下会是vue常见面试题: 面试题将会以系列不定时更新,编写不宜,如有用到,请动动小手关注一下。
-
Vue是什么 Vue 是一套用于构建用户界面的渐进式框架。
-
MVVM 模式是什么 MVVM 是Model-View-ViewModel的简写。它本质上就是 MVC 的改进版。它本质上就是 MVC 的改进版。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。
Model: 数据模型层
View: 视图层
ViewModel: 视图模型层
-
双向数据绑定的原理是什么 采用数据劫持 和 发布者-订阅者模式, 通过Object.defineProperty()方法劫持各属性的setter、getter,在数据发生改变时通知订阅者,并触发相应的监听回调
-
Vuex是什么 Vuex 是一个专为 Vue.js 应用程序开发的 状态管理模式
-
Vuex的原理是什么 vuex实现了一个单项数据流,在全局又有一个state存放数据, 当组建要更改state中的数据时,必须通过Mutation进行,mutation同时提供了订阅者模式供外部插件调用获 取state数据的更新。 而当所有异步操作(常见于调用后台接口异步获取更新数据)或批量的同步操作需要走Action, 但Action也是无法直接修改state的,还是需要通过mutation来修改state的数据。 最后根据state的变化,渲染到视图上。
-
Vue-router 原理 vue-router通过hash与history两种方式实现前端路由。
更新视图但不重新请求页面是前端路由原理的核心之一。
-
Vue的生命周期有哪些 beforeCreate : 开始创建
data 和 methods 都未创建, 此处不能使用
created : 创建完毕
data 和 methods 创建完毕, 最早的可以使用处
beforeMount : 开始挂载
内存中已编译好所有内容, 准备显示到页面
mounted : 挂载完毕
组件脱离创建阶段, 真正显示到页面上. 操作页面的DOM 最早可以在这里进行
beforeUpdate : 更新前
updated : 更新完毕
beforeDestory : 销毁前
destroyed : 销毁完毕
data 和 methods 此处已消失, 无法使用 vue 获取数据在哪个周期函数
8. Vue获取数据应该在哪个生命周期 理论上, 应该在 created 周期中进行网络请求. 因为这是最早的的 methods 与 data 加载完毕的时机. 在 created 发送请求, 可以比 mounted 周期发送请求, 提前几毫秒的时间拿到数据. 而实际开发中, 几毫秒的提前对用户来讲, 没有任何差异. 所以 created 和 mounted 发送请求都可以。
-
Vue的computed特性 计算属性就是当其依赖属性的值发生变化时,这个属性的值会自动更新,与之相关的DOM部分也会同步自动更新。
-
Vue的watch是否可以监听数组 可以监听到数组的增删和内部变化。
不可以监听到数组已有元素的值发生的变化。
- v-if 和 v-for 为什么不能在一起使用 因为v-for的优先级比v-if高,所以在渲染时即便条件不达成也会先渲染循环再进行判断,这样会造不成不必要的性能浪费
解决方案: 再外层嵌套template标签并再标签上判断
如果循环出现再内部则使用计算属性提前过滤掉不需要显示的项。
-
父组件和子组件哪个先完成挂载 子组件, 因为子组件不挂载完成父组件不可能挂在完成。
-
组件间传参的方式
-
父给自传
通过props
- 子给父传
自定义事件
- 兄弟间传参
事件车