2021-07-16

2023-11-09

VUE 生命周期

vm的一生:

将要创建 => 调用beforeCreate函数。
创建完毕 => 调用create函数。

将要挂载  => 调用beforeMount函数
*挂在完毕 => 调用mounted函数

将要更新 => 调用beforeUpdate函数
更新完毕 => 调用updated函数

*将要销毁 => 调用beforDestroy函数
销毁完毕 => 调用distroyed函数

最基本的生命周期

从创建(数据代理)->
将要挂在(生成虚拟 dom 为编译dom结构)->
挂在完毕(虚拟dom转为真实dom 并且存到vm.$el)

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="root">
		
			<h2>当前的n:{{n}}</h2>
		</div>
		<script src="../../vue.js" type="text/javascript" charset="utf-8"></script>
		<!-- <script src="../../vue.js" type="text/javascript" charset="utf-8"></script> -->
		<script type="text/javascript">
			new Vue({
				el:"#root",
				data:{
					opacity:1,
					n:1
					
				},
				methods:{
					add(){
						// console.log(this)
						n++;
					}
				},
				//1.初始化:生命周期 事件 但是data还没拿到
				//2.beforeCreate  数据代理还没开始  方法还没进入
				beforeCreate() {
					console.log('此时还拿不到data 和方法')
					// debugger;//添加断点
				},
				//3.初始化:数据监测  数据代理
				//4.数据监测  数据代理完成
				created() {
					console.log("数据监测  数据代理完成")
					//可以访问到data了
					// debugger;
				},
				
				/* 
				//开始解析模板  生成虚拟DOM(内存中),但是页面还不能显示解析好的内容
				
				//5.el 配置项是否有 
				//6.有没有template  (如果没有)
				//7.开始编译
				 */
				//8.beforeMoubt 未编译dom结构
				beforeMount() {
					console.log('vue已经解析完了  但是还没放上去')
					// debugger
					//所有对dom的操作最终都是无效的
				},
				//9.虚拟dom转成真是dom存到vm.$el上去
				//10.vue 实例(不是组件)挂在挂载完毕
				mounted() {
					//初始化操作  经过vue操作的
					console.log('mouted vue虚拟dom替换成真实dom',this.$el)
					//此时尽可能避免操作dom
					//至此初始化过程结束  一般在这个阶段开启定时器 发送网络请求 订阅消息 绑定自定义事件 等初始化操作
				}
			})
		</script>
	</body>
</html>

更新生命周期

当数据更新时调用(不更新不会调用,一开始也不会)
1.beforeUpdate 数据和页面未保持同步,(面试可能问)数据已经发生更新

2.完成更新并且与旧数据进行对比

3.updated数据更新完毕

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="root">
			<h2>{{n}}</h2>
			<button type="button" @click="n++">继续学</button>
		</div>
		<script src="../../vue.js" type="text/javascript" charset="utf-8"></script>
		<!-- <script src="../../vue.js" type="text/javascript" charset="utf-8"></script> -->
		<script type="text/javascript">
			new Vue({
				el:"#root",
				data:{
					opacity:1,
					n:1
				},
				methods:{
					
					death(){
						console.log(this)
					}
				},
				//vue 实例(不是组件)挂在挂载完毕
				mounted() {
					
				},
				//当数据更新世
				beforeUpdate() {
					console.log('数据开始更新')
					//页面和数据还没保持同步
					//数据改了但是还没弄到界面上
				},
				//这里会完成更新  然后新的旧的进行对比
				
				updated() {
					//数据更新完毕
					
				}
				
				
			})
		</script>
	</body>
</html>

销毁生命周期

**调用 vm.$destroy() 进行销毁。
1.beforeDestroy 此时vm中的 data 等都是可用状态 马上销毁过程,在此阶段关闭定时器 取消订阅消息。对数据发生的所有的变化都不会更新了。

2.destroyed销毁了

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="root">
			<h2 :style="{opacity}">{{n}}</h2>
			<button type="button" @click="n++">继续学</button>
			<button type="button" @click="bye()">点我销毁vm</button>
		</div>
		<script src="../../vue.js" type="text/javascript" charset="utf-8"></script>
		<!-- <script src="../../vue.js" type="text/javascript" charset="utf-8"></script> -->
		<script type="text/javascript">
			new Vue({
				el:"#root",
				data:{
					opacity:1,
					n:1
				},
				methods:{
					
					death(){
						console.log(this)
					},
					bye(){
						console.log("销毁vm")
						this.$destroy()
						//解绑vm事件和监听 但是以前的成功保留
					}
				},
				beforeDestroy() {
					//此时vm中的 data 等都是可用状态  马上销毁过程
					//在此阶段关闭定时器  取消订阅消息
					console.log("被销毁前夕") 
					//但是页面数据不会再发生变化
					//对数据发生的所有的变化都不会更新了
				},
				destroyed() {
					console.log('被销毁了!')
				}
			})
		</script>
	</body>
</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2021-07-16 的相关文章

随机推荐

  • 浅谈什么是闭包

    什么是闭包 我个人理解为 闭包就是能够读取其他函数内部变量的函数 由于在Javascript语言中 只有函数内部的子函数才能读取局部变量 因此可以把闭包简单理解成 定义在一个函数内部的函数 实际使用场景 封装方法的时使用callback回调
  • CAN与CANOpen(一)

    CAN与CANOpen 一 基本概念 CAN与CANOpen 二 报文格式 CAN与CANOpen 三 错误处理 CAN与CANOpen 四 CANOpen对象字典 CAN与CANOpen 五 PDO和SDO CAN与CANOpen 六 网
  • 【面试总结】--tomcat调优方案

    前段时间参加面试 面试过程中提到服务器的调优方案 这里总结一下 首先说一下tomcat的调优方案 Tomcat本身的优化 Java虚拟机调优 Tomcat 优化分为系统优化 接下来一个个介绍 一 Tomcat本身的优化 Tomcat 的自身
  • js获取当前页面url网址信息

    1 window location href 设置或获取整个 URL 为字符串 var test window location href alert test 返回 http i cnblogs com EditPosts aspx op
  • -bash: mysqldump: command not found

    根目录在 usr local mysql bin mysqldump所以得在此目录下执行 要不就是创建软连接 这个目录是我自己tar安装的时候配置的目录 如果安装的是其他目录换成自己的目录就行了 不过一般都是这个目录吧 1 首先通过下面的命
  • Spring的控制反转(依赖注入),及两种注入方式

    1 提供构造函数来让spring实现构造注入 public class PersonService private String name 提供bean的构造函数 让spring用构造注入的方式来构造cibean public Person
  • nodejs 通过nginx后出现响应慢的解决方法

    最近用了nodejs搭建服务器 然后用了nginx做了反向代理 项目开发需求 没办法 但是发现了经过代理之后发现网页请求变慢了 而且是不能忍的一分钟以上 一开始 怀疑是在nodejs那边的问题 结果在nodejs那边进行了判断 通过写测试代
  • python : is 和==的区别

    Python中的对象包含三要素 id type value 1 id用来唯一标识一个对象 is判断的是a对象是否就是b对象 是通过id来判断的 2 type标识对象的类型 3 value是对象的值 判断的是a对象的值是否和b对象的值相等 是
  • Android音频系统之AudioFlinger(一)

    1 1 AudioFlinger 在上面的框架图中 我们可以看到AudioFlinger 下面简称AF 是整个音频系统的核心与难点 作为Android系统中的音频中枢 它同时也是一个系统服务 启到承上 为上层提供访问接口 启下 通过HAL来
  • 数据模型建模详解

    问题导读 1 数据层次如何划分 2 如何进行数据划分及命名空间约定 3 ODS层分为几部分 数据层次的划分 ODS Operational Data Store 操作数据层 在结构上其与源系统的增量或者全量数据基本保持 一致 它相当于一个数
  • 基于MATLAB的模糊pi控制器的设计

    基于MATLAB的模糊pi控制器的设计 模糊规则隶属函数的建立 a newfis fuzzypid 添加第一个输入变量e a addvar a input e 1 1 a addmf a input 1 N zmf 1 1 3 a addm
  • 用Qt写软件系列二:QCookieViewer(浏览器Cookie查看器)

    预备 继上篇 浏览器缓存查看器QCacheViewer 之后 本篇开始QCookieViewer的编写 Cookie技术作为网站收集用户隐私信息 分析用户偏好的一种手段 广泛应用于各大网站 对于网站的精准营销 使用反馈 数据挖掘等具有不可估
  • 华为OD题目:统一限载货物数最小值

    华为OD机试 统一限载货物数最小值 题目描述 火车站附近的货物中转站负责将到站货物运往仓库 小明在中转站负责调度2K辆中转车K辆干货中转车 K辆湿货中转车 货物由不同供货商从各地发来 各地的货物是依次进站 然后小明按照卸货顺序依次装货到中转
  • 2008.06.01 读华为前执行副总裁李玉琢的《我与商业领袖的合作与冲突》有感(二)

    读华为前执行副总裁李玉琢的 我与商业领袖的合作与冲突 有感 二 关于作者的收山之作 利德华福之战 李玉琢如何收拾人心 天地虽小故事多 人生成就有几何 放杯一饮长江水 何计万里波与折 做人虽难仍须做 问心无愧是原则 人间会有公道在 种瓜种豆各
  • Centos7环境下配置IEEE 802.3ad 动态链接聚合(bond4)

    环境 Centos7 6 Vmware 添加2块网卡 查看网卡配置文件 root linux ls etc sysconfig network scripts grep ens ifcfg ens33 查看发现只有一个网卡的配置文件 因此需
  • 牛客题库—软件测试(一)

    下面几种白盒测试技术 哪种是最强的覆盖准则 D 条件组合覆盖 六种覆盖方法中 覆盖准则由弱到强依次是语句覆盖 判定覆盖 分支覆盖 条件覆盖 判定 条件覆盖 条件组合覆盖 路径覆盖 其中 语句覆盖是使得程序中每个语句至少被执行一次 判定覆盖是
  • webpack- JavaScript 应用程序的静态模块打包器

    一 概念 本质上 webpack 是一个现代 JavaScript 应用程序的静态模块打包器 module bundler 当 webpack 处理应用程序时 它会递归地构建一个依赖关系图 dependency graph 其中包含应用程序
  • DrawerLayout的openDrawer()和closeDrawer()方法

    如下代码 DrawerLayout mdrawerLayout Button btn 以上为声明组件 为简便其余过程省略 btn setOnClickListener new OnClickListener mdrawerLayout op
  • Go Web编程实战(8)----创建HTTP与HTTPS服务器端

    目录 创建一个HTTP服务端 ListenAndServe ServeHTTP 方法的使用示例 定义Refer结构体 实现ServeHTTP 方法 创建一个HTTPS服务端 创建证书与私钥 创建HTTPS服务端 创建一个HTTP服务端 其实
  • 2021-07-16

    VUE 生命周期 vm的一生 将要创建 gt 调用beforeCreate函数 创建完毕 gt 调用create函数 将要挂载 gt 调用beforeMount函数 挂在完毕 gt 调用mounted函数 将要更新 gt 调用beforeU