这里写目录标题
- 01------ 生命周期函数有哪些---(必问)
- 02------vue路由有⼏种模式?.路由的模式 以及原理 区别------(必问)
- 03------导航守卫------(必问)
- 04------vue组件通信?(必问)。eventBus 讲解
- 05------vue双向数据绑定原理?(必问)
- 06------vue中key的作⽤是什么?(必问)。过⼀下
- 07------ vue中data发⽣变化,视图不更新如何解决?(必问) 过⼀下
- 08------为什么vue中data必须是⼀个函数?(必问) 过⼀下
01------ 生命周期函数有哪些—(必问)
创建阶段 4个
beforeCreate 创建之前 created 创建之后
beforeUpdate 数据变了 视图还没变 updated 数据变了 视图也变了
运行阶段 2个
beforeMount 组件挂载之前 mounted 组件挂载之后
销毁阶段 2个
beforeDestory 组件销毁之前 destoryed 组件销毁之后
除了这八个 还有 三个
activated 组件激活
deactivated 组件停用
errorCaptured 子组件出错的时候会触发这个钩子函数
1.2 项目开发中 在生命周期里都做过什么功能
我在写效果的过程中 会在 created 或者 mounted 中发送 http 请求
created 和 mounted 的区别 就是 created 比 mounted 执行的时间更早所以会更多的在 created 中请求
mounted 的特点是可以操作 dom 节点
还会用 created 钩子函数 获取 本地存储的数据
02------vue路由有⼏种模式?.路由的模式 以及原理 区别------(必问)
⾯试官您好,接下来我给您介绍⼀下 vue 的路由模式,vue 的路由模式⼀共有两种,分别是哈希和 history.他们的区别是 hash 模式不会包含在 http 请求当中,并且 hash 不会重新加载⻚⾯,⽽使⽤ history 模式的话,如果前端的 url 和后端发起请求的 url 不⼀致的话,会报 404 错误,所以使⽤ history 模块的话我们需要和后端进⾏配合.
history 的原理就是利⽤ ht
03------导航守卫------(必问)
一共有三种
第一种是全局守卫
beforeEach 路由进入之前
afterEach 路由进入之后
第二种 组件内守卫
beforeRouteEnter 路由进入之前
beforeRouteUpdate 路由更新之前
beforeRouteLeave 路由离开之前
第三种 独享守卫
beforeEnter 路由进入之前
有三个参数
to from next
next 这个参数 在路由 3.x 版本的时候 是必须的
但是到了路由 4.x 版本的时候 next 参数变成可选的了
04------vue组件通信?(必问)。eventBus 讲解
⽗传⼦ 在⼦组件的标签上定义属性 ⼦组件通过 props 来进⾏接受 , 可以通过数组的⽅式进⾏接受 , 也可以通过对象的⽅式来进⾏接收, 如果⽗组件没有传递属性 , ⼦组件可以 default 来设置默认值
⼦传⽗ ⼦组件通过 this.$emit(“⾃定义的事件”,要传给⽗组件的数据 ), ⽗组件通过⼦组件的标签监听⾃定义的时间 , 通过⽅法来 接收传递的数据
⾮⽗⼦组件通信
通过中央事件总线 , 我们也称之为 eventBus,
我们需要创建⼀个空的js ⽂件 , 在这个⽂件⾥⾯创建空的 vue 实例 , 然后导出这个空的 vue 实例 , 通过例对象调⽤.on⽅法进⾏接 收, 通过 emit ⽅法来进⾏发送 , 以上就是⾮⽗⼦组件通信的⽅式
05------vue双向数据绑定原理?(必问)
vue.js 则是采⽤ 数据劫持 结合 发布者-订阅者 模式的⽅式,通Object.defineProperty() 来劫持各个属性的 setter , getter ,在数据变动时发布消息给订阅者,触发相应的监听回调。这个时候就可以实现数据的双向绑定
06------vue中key的作⽤是什么?(必问)。过⼀下
避免dom元素重复渲染. 我⻔⼀般在设置key的时候⾸先尽量会设置为id,或者index下标。
07------ vue中data发⽣变化,视图不更新如何解决?(必问) 过⼀下
在 vue2 中 vue 实例的 data 数据是响应式 的 就是数据变了 视图也会跟着变,如果给某一个 data 新添加了一个字段 这个新添加的字段因为 js 的限制不响应,需要使this.$set 方法代替原本的普通添加方法 就能实现响应,这个方法的三个参数 是给谁添加 添加的字段 初始值 如果不是在组件中 用这个方法 那么就用 Vue.set
08------为什么vue中data必须是⼀个函数?(必问) 过⼀下
如果data是⼀个函数的话,这样每复⽤⼀次组件,就会返回⼀份新的data,类似于给每个组件实例创建⼀个私有的数据空间,让各个组件实例维护各⾃的数据。⽽单纯的写成对象形式,就使得所有组件实例共⽤了⼀份data,就会造成⼀个变了全都会变的结果。
所以说vue组件的data必须是函数。这都是因为js的特性带来的,跟vue本身设计⽆关。