vue面试总结-2022
1.vue生命周期及各周期得特点
beforCreate
特点:
初始化实例,不能使用data和methods、ref
示例
beforeCreate: function () {
console.group('------beforeCreate创建前状态------');
console.log("%c%s", "color:red", "el : " + this.$el); //undefined
console.log("%c%s", "color:red", "data : " + this.$data); //undefined
console.log("%c%s", "color:red", "data中的msg : " + this.msg); //undefined
console.log("%c%s", "color:red", "methods中的handleOpen方法 : " + this.handleOpen); //undefined
},
结果

created
特点:
data和methods都已经被初始化好了,可以调用,但ref还是不行
示例
created: function () {
console.group('------created创建完毕状态------');
console.log("%c%s", "color:red", "el : " + this.$el); //undefined
console.log("%c%s", "color:red", "data : " + this.$data); //已被初始化 [object Object]
console.dir(this.$data)
console.log("%c%s", "color:red", "data中的msg : " + this.msg); //测试
console.log("%c%s", "color:red", "methods中的handleOpen方法 : " + this.handleOpen); //function () { [native code] }
},
结果

beforeMount
特点:
开始挂载之前调用,相关的render函数首次被调用 此时的DOM是数据挂载前的DOM,数据还未挂载(将虚拟Dom转变成真实Dom的过程,所以在这之前,我们的el当然还是拿不到的)虽然 $ref已被初始化,但还是拿不到值
示例
beforeMount: function () {
console.group('------beforeMount挂载前状态------');
console.log("%c%s", "color:red", "el : " + this.$el); //undefined
console.log("%c%s", "color:red", "refs : " + this.$refs); //已被初始化
console.dir(this.$refs)
var _ref = JSON.parse(JSON.stringify(this.$refs))
console.log("%c%s", "color:red", "_ref : " + _ref); //已被初始化
console.dir(_ref)
console.log("%c%s", "color:red", "refs.myRef : " + this.$refs.myRef); //undefined
console.log("%c%s", "color:red", "data : " + this.$data); //已被初始化
console.log("%c%s", "color:red", "data中的msg : " + this.msg); //已被初始化
console.log("%c%s", "color:red", "methods中的handleOpen方法 : " + this.handleOpen);//已被初始化
},
结果

跑题·······················
大家看小颖在打印 $ref 时 又重新定义了一个_ref ,并且这个变量是深拷贝了 $ref 的,这是为 了方便大家能够看到在该钩子函数中 $ref 的值,如果大家不明白为什么,可以看下下面的代码
var a = 1;
var b = a;
a = 3
console.log(a)
console.log(b)
var a2 = {}
var b2 = a2
a2.c = '22'
console.log(a2)
console.log(b2)

看这个结果大家有没有发现变量 b 不会随着变量 a 的改变而改变,但是变量 b2 会随着变量 a2 的改变而改变,这是为什么呢?
因为 a 、 b 都是基本类型,而 a2、b2 都是引用类型,基本类型存储的是值,引用类型存储的是一个指向对象真实内存地址的指针。在 js 中,对象包括Array Object Function RegExp Math等。

大家可以参考下:js对象赋值只保留存在的属性_夯实JS主要知识点
来来来,我们接着看vue的生命周期,不要被小颖带偏了哈哈哈
mounted
特点:
实例挂载完成,vue实例已经初始化完成,初始化的el被vm.$el替换(虚拟Dom已经挂载在了真实的元素上,所以从此开始我们就可以拿到el)
示例
mounted: function () {
console.group('------mounted 挂载结束状态------');
console.log("%c%s", "color:red", "el : " + this.$el); //已被初始化
console.dir(this.$el)
console.log("%c%s", "color:red", "refs : " + this.$refs); //已被初始化
console.log("%c%s", "color:red", "refs.myRef : " + this.$refs.myRef);//已被初始化
console.dir(this.$refs)
console.log("%c%s", "color:red", "data : " + this.$data); //已被初始化
console.log("%c%s", "color:red", "data中的msg : " + this.msg); //已被初始化
console.log("%c%s", "color:red", "methods中的handleOpen方法 : " + this.handleOpen);//已被初始化
},
结果

beforeUpdate
特点:
数据更新时调用,发生在虚拟DOM打补丁之前,这里适合更新之前访问现有的DOM,比如手动移除已添加的时间监听器,该钩子在服务器端渲染期间不被调用,因为只有初次渲染会在服务端进行 。
示例
beforeUpdate: function () {
console.group('beforeUpdate 更新前状态===============》');
// 比如点击新增数组元素, vue会触发此生命周期函数, 但是此时页面并未更新, 所以获取不到新增的li标签
console.log(document.getElementById("myUl").children[2].innerHTML);
console.log(document.getElementById("myUl").children[3].innerHTML);
},
结果

updated
特点:
在数据驱动下导致的虚拟DOM重新渲染和打补丁之后调用,此时,组件DOM已经更新。只会在数据变更之后触发这个钩子函数。
示例
updated: function () {
console.group('updated 更新完成状态===============》');
console.log(document.getElementById("myUl").children[2].innerHTML);
console.log(document.getElementById("myUl").children[3].innerHTML);
},
结果

beforeDestroy
特点:
实例销毁之前调用,此时实例还可用
示例:
(清除定时器 / 解绑js定义的事件)
destroyed
特点:
实例销毁后调用,实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁,
示例:
(清除定时器 / 解绑js定义的事件)
大家也可以看看:
Vue都使用那么久了,还不了解它的生命周期吗、了解Vue的生命周期、vue组件的生命周期讲解
后面的等晚上再写·················
vue面试总结-2022的更多相关文章
- 太原面经分享:如何在vue面试环节,展示你晋级阿里P6+的技术功底?
前言 一年一度紧张刺激的高考开始了,与此同时,我也没闲着,奔走在各大公司的前端面试环节,不断积累着经验,一路升级打怪. 最近两年,太原作为一个准二线城市,各大互联网公司的技术栈也在升级换代,假如你在太 ...
- vue 面试时需要准备的知识点
前端火热的框架层出不穷,作为码农的我们,依旧需要去学习,去探索新的问题,学习新技术,其实就是为了写一手好的,自认为是高质量的代码.今天主要分享一下前端最火的框架vue,也是我比较喜欢的框架. vue上 ...
- vue面试常遇到的面试题
最近面试了好几家公司,总结一下经常被问到的面试题. 首先呢,一开始先来一个自我介绍,没啥好说的. 接下来就是考验你vue技术的问题了 一些常见的面试题 vue的生命周期 一共有八个阶段,分别为创建前后 ...
- Vue面试中,经常会被问到的面试题/Vue知识点整理
一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数 ...
- Vue面试中经常会被问到的面试题
一.对于MVVM的理解 MVVM是 Model-View-ViewModel 的缩写. Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑. View代表UI组件,它负责将数据模 ...
- vue面试
1.一个比较全的vue面试题 http://www.bslxx.com/p/3187.html
- vue面试常被问到的问题整理
1.Vue的双向数据绑定原理是什么? 答 : vue是采用数据劫持,并且使用发布-订阅者的开发模式.原理是观察者observer通过Object.defineProperty()来劫持到各个属性的ge ...
- vue面试相关
(1)什么是mvvm? MVVM是Model-View-ViewModel的缩写.mvvm是一种设计思想.Model 层代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑:View ...
- vue面试的一些总结
vue中组件的data为什么是一个函数? 组件是可复用的vue实例,一个组件被创建好之后,就可能被用在各个地方,而组件不管被复用了多少次,组件中的data数据都应该是相互隔离,互不影响的,基于这一理念 ...
随机推荐
- TINY语言采用递归下降分析法编写语法分析程序
目录 自顶向下分析方法 TINY文法 消左提左.构造first follow 基本思想 python构造源码 运行结果 参考来源:聊聊编译原理(二) - 语法分析 自顶向下分析方法 自顶向下分析方法: ...
- js中的undefined
undefined,一个特殊值,通常用于指示变量尚未赋值,是一个JavaScript的 原始数据类型 . 如果后台返回前台数据为空(无数据),那么用该对象获取其中的属性会显示undefined. 如果 ...
- 定时执行任务-springboot
定时执行任务-springboot 先看两个接口 这两个接口springboot已经帮我们封装好了,我们不需要去手动使用 TaskScheduler //任务调度者 TaskExecutor //任务 ...
- 注册中心Eureka的简单使用
不讲原理,只讲简单使用 微服务,一般是父子工程,可以直接在父工程下新建个模块来用来启动Eureka 1.创建Eureka模块 2.引入依赖 <dependency> <groupId ...
- 深入理解Kafka核心设计及原理(四):主题管理
转载请注明出处:https://www.cnblogs.com/zjdxr-up/p/16124354.html 目录: 4.1创建主题 4.2 优先副本的选举 4.3 分区重分配 4.4 如何选择合 ...
- vue预渲染及其cdn配置
VUE SEO方案一 - 预渲染及其cdn配置 项目接入VUE这样的框架后,看起来真是太漂亮了,奈何与MCV框架比起来,单页应用程序却满足不了SEO的业务需求,首屏渲染时间也是个问题.总不能白学VUE ...
- gin框架使用【5.表单参数】
curl http://127.0.0.1:8080/users -X POST -d 'name=juanmaofeifei&age=10' package main import ( &q ...
- vue动态绑定属性--基本用法及动态绑定class
动态绑定属性v-bind:,语法糖形式:省略v-bind,仅写一个冒号. 一.动态绑定基本属性 1 <body> 2 <!-- v-bind 动态绑定属性-基本用法 --> 3 ...
- UnrealEngine创建自定义资产类型
导语 这篇文章记录了将UObject实例保存在Asset文件的方法,用这个方法可以将自定义的UObject数据序列化保存到文件,可以用于自定义UE资源类型. 创建UObject类 这一步比较简单,按照 ...
- 邮件html页编写指南
前言 写过邮件的html一般都用table来布局,为什么呢?原因是大多数的邮件客户端(比如Outlook和Gmail),会过滤经过多次的邮件编写实践及度娘的指导,我发现,编写自制兼容outlook与f ...