vue前端面试题

1、vue的两个核心:数据驱动和组件化。
2、vue的生命周期钩子总共有几个,每一个生命周期主要是做什么事?
3、keep-alive了解吗?他也有两个钩子,分别是?
4、组件之间的通信有哪几种?
5、你知道v-model的实现原理是什么吗?
6、用过computed和watch吗?有什么区别?
7、Vue NextTick原理

1、vue的两个核心:

数据驱动和组件化

2、vue的生命周期钩子总共有几个,每一个生命周期主要是做什么事?

beforeCreate

vue实例的挂载元素$el和函数data都为undefined,数据还未初始化
created
data数据初始化、可以操作data、methods,处理与数据相关逻辑
$el还没有,不能进行DOM操作
请求数据可以放在这里
beforeMount
虚拟DOM节点
mounted
DOM节点渲染完成,可以操作DOM节点
beforeUpdate
只要修改值就会重复执行
updated
只要修改值就会重复执行
beforeDestrory
destroyed

beforeCreate => create $data是vue实例中的代理,在created中用this可以访问到data中的数据
beforeMount => mounted 使用了render函数进行了模板编译

3、keep-alive了解吗?他也有两个钩子,分别是?

路由缓存,通过组件中的 name属性对应,如果跳转路由,再跳转回来,使用了keep-alive的话,页面就会取缓存,不会进行网络请求。
actived如果需要进行一些数据请求的话,可以在这个生命周期中操作
deactived销毁

4、组件之间的通信有哪几种?

子组件props接收父组件的参数、子组件$emit传递给父组件参数

ref

bus中央事件总线

attrs和lisenter爷孙传递

provide inject 全局变量,可能导致变量污染

H5离线存储

vuex状态管理器

说一下vuex中包括哪些属性?

state:相当于vue实例中的data函数,
getters:对于state中的数据进行处理、计算等;返回值会根据它的依赖被缓存起来,且只有当它的依赖值发生了改变才会被重新计算。注意:getter 在通过方法访问时,每次都会去进行调用,而不会缓存结果
mutations:必须是同步函数
actions:作用相当于mutations,区别在于可以提供异步请求
modules:模块管理

说一下mutations和actions之间的区别?
两个属性中都可以做网络请求,只不过 actions中可以做异步请求,mutations中不可以

vuex刷新后数据还存在吗?
vuex刷新后数据不存在,但是可以保存曹sessionStorage中,但是sessionStorage中的数据不是实时更新的

怎么获取state中的数据

import { mapState } from 'vuex'
this.$store.state.count

中央事件总线的怎么使用?
1.创建一个js文件,new 一个Vue实例,然后导出
2.在需要传递、接收数据的文件内分别引入此js文件
3.传递数据使用$emit
4.接收数据使用$on

  import Vue from 'vue';
  const bus = new Vue();
  export default bus;
  import bus from "@/utils/Bus";
 bus.$emit("collapse", this.collapse);//传递
 bus.$on("collapse", (data)=>{
     console.log(data)
 });

5、你知道v-model的实现原理是什么吗?

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

6、用过computed和watch吗?有什么区别?

computed:依赖其他属性值,具有缓存值的功能,只要是所依赖的值没有发生改变,就会取缓存中的值,只有当所依赖的值发生改变时,下一次获取的值才会重新计算computed的值
watch:监听数据变化,不支持缓存;支持异步操作;监听函数接收两个参数,第一个参数是最新的值,第二个参数是输入之前的值

7、Vue NextTick原理

nextTick中的回调是下次DOM更新循环结束之后执行的延迟回调。在修改数据之后立即使用这个方法,获取更新后的DOM。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue是一个流行的前端框架,以下是对Vue生命周期的理解: Vue的生命周期包括了创建、挂载、更新和销毁等不同的阶段。在每个阶段,Vue都会触发相应的生命周期钩子函数,我们可以在这些函数中执行相关的操作。 - 创建阶段:Vue实例初始化,包括数据的观测、事件的初始化等。在这个阶段,可以使用beforeCreate和created钩子函数来执行一些初始化操作,但此时DOM元素还未挂载。 - 挂载阶段:在挂载阶段,Vue将编译好的模板挂载到DOM元素上,并将数据渲染到视图上。在挂载阶段,可以使用beforeMount和mounted钩子函数来执行相关的操作。beforeMount在挂载之前被调用,此时虚拟DOM已经创建好,但还未替换真实DOM;而mounted在挂载之后被调用,此时真实DOM已经插入到页面中。 - 更新阶段:当数据发生变化时,会触发更新阶段。在这个阶段,Vue会重新渲染视图以反映最新的数据。可以使用beforeUpdate和updated钩子函数来执行相关的操作。beforeUpdate在数据更新之前被调用,此时虚拟DOM已经更新完成,但还未应用到真实DOM;而updated在数据更新之后被调用,此时视图已经更新完成。 - 销毁阶段:在销毁阶段,Vue实例被销毁,包括清除定时器、解绑事件等。可以使用beforeDestroy和destroyed钩子函数来执行相关的操作。beforeDestroy在实例销毁之前被调用,此时实例仍然可用;而destroyed在实例销毁之后被调用,此时实例已经被完全销毁。 总结来说,Vue的生命周期钩子函数提供了一系列的时机,方便我们在不同的阶段执行相关的操作,使得我们能更好地控制和管理Vue应用的生命周期。详细的内容可以参考中提供的博客链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【前端面试】39道Vue高频面试题,亲测有效!!!快来看看呀!!](https://blog.csdn.net/weixin_43352901/article/details/108210170)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值