生命周期

组件从开始到结束的全过程

  • 创建阶段:beforeCreate、created
  • 挂载阶段:beforeMount、mounted
  • 更新阶段:beforeUpdate、updated

  • 销毁阶段:beforeDestroy、destroyed

与动态组件有关的两个特殊的钩子:

activated(激活)、deactivated(休眠)

与组件异常捕获有关的一个钩子:

errorCaptured

生命周期有哪些

  • beforeCreate:声明methods方法,声明生命周期钩子
  • created:注入provide数据,响应式劫持、把data上数据遍历后放在this上
  • beforeMount:通过el/$mount/template找视图模板,把template视图模板编译成render() (render方法是用于创建虚拟DOM的)
  • mounted:创建$el挂载节点,调用render()方法第一次生成虚拟DOM(Vnode是对真实视图结构的一种数据描述),Vue开始编译工作,循环递归,指令和声明式变量进行touch,依赖收集、通知Watcher第一次完成DOM渲染
  • beforeUpdate:网页呈现在你的面前上,当各种事件交互触发data变化时
  • updated:再次调用render()方法生成新的虚拟DOM(现在就有了两个虚拟DOM,执行patch运算(diff运算)找出两个虚拟DOM之间的最小差异(脏节点集合),通过一个队列进行异步更新。
  • beforeDestroy:当调用$destroy()或路由切换时,即将进入销毁阶段
  • destroyed:移除当前组件的Watcher(DOM将无法再更新了),拆卸掉所有的子组件,移除事件监听器(wacth等等)
    const app = new Vue({
data () {
return {
num: 1
}
},
watch: {
num () {
console.log('--- num changed')
}
},
// 声明methods方法
// 声明生命周期钩子
beforeCreate () {
console.log('---beforeCreate')
},
// 注入provide数据
// 响应式劫持、把data上数据遍历后放在this上
created () {
console.log('---created')
// 调接口
},
// 通过el/$mount/template找视图模板
// 把template视图模板编译成render() (render方法是用于创建虚拟DOM的)
beforeMount () {
console.log('---beforeMount')
},
// 创建$el挂载节点
// 调用render()方法第一次生成虚拟DOM(Vnode是对真实视图结构的一种数据描述)
// Vue开始编译工作,循环递归,指令和声明式变量进行touch,依赖收集、通知Watcher第一次完成DOM渲染
mounted () {
console.log('---mounted')
// 调接口、开定时器、建立websocket长连接、echarts图表实例化、DOM/BOM操作。。。
},
// 网页呈现你的面前上,当各种事件交互触发data变化时
beforeUpdate () {
console.log('---beforeUpdate')
},
// 再次调用render()方法生成新的虚拟DOM(现在就有了两个虚拟DOM)
// 执行patch运算(diff运算)找出两个虚拟DOM之间的最小差异(脏节点集合),通过一个队列进行异步更新。
updated () {
console.log('---updated')
// updated在某些场景下,可以模拟出watch/$nextTick()的功能。
},
// 当调用$destroy()或路由切换时,即将进入销毁阶段
beforeDestroy () {
console.log('---beforeDestroy')
// 清除定时器、清除缓存
},
// 移除当前组件的Watcher(DOM将无法再更新了)
// 拆卸掉所有的子组件
// 移除事件监听器(wacth等等)
destroyed () {
console.log('---destroyed')
},
methods: {
add () {
console.log('---add')
this.num++
}
}
})
app.$mount('#app')
 app.$mount('#app')和el:'#app'都是挂载到真实DOM中。

什么是虚拟DOM

是一个很大的JSON数据,用于描述视图模板的,保存在内存中。

虚拟DOM存在的价值点

更新,把DOM更新粒度降到最低,规避人为DOM滥操作。

什么是diff运算

在更新阶段,patch对新旧虚拟DOM进行对比,找出脏节点,提交更新。

什么是MVVM框架

MVVM流程 : M数据层 -> VM虚拟DOM层 -> V视图层

网页本质 = M数据层 + V视图结构

Vue生命周期和MVVM框架的更多相关文章

  1. Vue生命周期,面试常见问题

    一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数 ...

  2. Vue生命周期学习

    转自https://www.w3cplus.com/vue/vue-instances-and-life-cycles.html Vue实例虽然没有完全遵循MVVM模型,但Vue的设计无疑受到了它的启 ...

  3. vue生命周期的介绍

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. vue 生命周期

    一 vue的生命周期如下图所示(很清晰) 二 vue生命周期的栗子 注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE html> <h ...

  5. 详解vue生命周期

    vue生命周期 @(vue)[生命周期] 前言 在使用vue一个多礼拜后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对于mounted这个挂载还不是很清楚的.放大之,对vue的生命周 ...

  6. 关于vue生命周期

    官网给出的实例的生命周期图如下: beforeCreate(页面创建前),created(页面创建后),beforeMount(页面载入前),mounted(页面载入后),beforeUpdate(页 ...

  7. vue生命周期的理解

    我从官网上下载了一张vue生命周期的图,接下来实际分析一波vue到底执行了什么东西. 1.我们在使用vue时必不可少的操作就是 var vm = new Vue({}),这样我们就创建了一个vue的实 ...

  8. 【Vue笔记】-- 详解vue生命周期

    针对于Vue的生命周期进行详细的说明,方面加深对各个方法的引用. 引言: 前几天重新回顾vue官网时,看到vue的生命周期,想着自己用vue开发了快一年了,就总结总结vue知识,再次加深自己对vue的 ...

  9. 面试题之(vue生命周期)

    在面试的时候,vue生命周期被考察的很频繁. 什么是vue生命周期呢? Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这 ...

随机推荐

  1. MybatisCodeHelperPro简单使用

    1.idea安装 2.连接mysql 3.创建实体等关联类 ,选择数据库表右键选择如图 4配置 生成后的 5简单应用 可以直接生成xml 总结:非常的方便快捷.

  2. VUE3 之 自定义指令的实现 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:能屈能伸的人生,才是完满而丰富的人生. 言归正传,今天我们来聊聊 VUE 中自定义指令的实现. 2. 自定义指令 2.1 文本框聚焦的实现  <body> < ...

  3. 【总结】2022GDOI普及组 没得游记

    因为是线上,所以没得游记 Day -3 学校安排去7班上课,好耶! 上午全是主科,有一节生物 被你七班捧上天了 被你七班造谣说我暴踩Everyone,还传到九班,给我玩阴的是吧 下午模拟赛,初一第一 ...

  4. HCNP Routing&Switching之RSTP

    前文我们了解了vlan优化,vlan聚合技术super vlan相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16208997.html:今天我们来聊 ...

  5. 一个登录点两个逻辑漏洞-edusrc

    最近呢, 也是基础漏洞学的差不多了, 就在edusrc上面实战, 刚开始搞一些信息泄漏啥的, 提交了十几个, 结果就他娘的通过了一个. 咱也就不碰信息泄漏了, 没得意思. 关于这个学校测试时也是有坑的 ...

  6. 用NetworkX生成并绘制(带权)无向图

    NetworkX是一个非常强大的网络科学工具,它封装了图的数据结构和许多经典图算法,也内置了许多可视化函数可供调用. 1. 随机图生成 最经典的随机图当属我们在上一篇博客<Erdos-Renyi ...

  7. vue中blob文件下载及其它下载方式

    一.Blob对象的了解 1:blob表示一个不可变.原始数据的类文件对象.Blob()构造函数返回一个新的blob对象:blob对象的内容由参数给出的值串联组成: 2:new Blob(array, ...

  8. js通用对象数组冒泡排序

    数组对象通用 function sort(data, sortFiled, orderby) { var result = data, temp; for (var i = 0; i < res ...

  9. 利用ArcEngine开发地图发布服务,将mxd文档一键发布成wmts,并根据需要对地图进行空间查询,返回客户端geojson

    一直想开发一个软件取代ArcGIS Server,该软件使用ArcEngine开发,以Windows Service形式发布,部署在服务端上,解决wmts地图服务发布和空间查询的问题,经过不断的研究. ...

  10. Redis系列:深刻理解高性能Redis的本质

    1 背景 分布式系统绕不开的核心之一的就是数据缓存,有了缓存的支撑,系统的整体吞吐量会有很大的提升.通过使用缓存,我们把频繁查询的数据由磁盘调度到缓存中,保证数据的高效率读写. 当然,除了在内存内运行 ...