Vue生命周期和MVVM框架
生命周期
组件从开始到结束的全过程
- 创建阶段:beforeCreate、created
- 挂载阶段:beforeMount、mounted
更新阶段:beforeUpdate、updated
- 销毁阶段:beforeDestroy、destroyed
与动态组件有关的两个特殊的钩子:
与组件异常捕获有关的一个钩子:
生命周期有哪些
- 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
虚拟DOM存在的价值点
什么是diff运算
什么是MVVM框架
网页本质 = M数据层 + V视图结构
Vue生命周期和MVVM框架的更多相关文章
- Vue生命周期,面试常见问题
一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数 ...
- Vue生命周期学习
转自https://www.w3cplus.com/vue/vue-instances-and-life-cycles.html Vue实例虽然没有完全遵循MVVM模型,但Vue的设计无疑受到了它的启 ...
- vue生命周期的介绍
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- vue 生命周期
一 vue的生命周期如下图所示(很清晰) 二 vue生命周期的栗子 注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE html> <h ...
- 详解vue生命周期
vue生命周期 @(vue)[生命周期] 前言 在使用vue一个多礼拜后,感觉现在还停留在初级阶段,虽然知道怎么和后端做数据交互,但是对于mounted这个挂载还不是很清楚的.放大之,对vue的生命周 ...
- 关于vue生命周期
官网给出的实例的生命周期图如下: beforeCreate(页面创建前),created(页面创建后),beforeMount(页面载入前),mounted(页面载入后),beforeUpdate(页 ...
- vue生命周期的理解
我从官网上下载了一张vue生命周期的图,接下来实际分析一波vue到底执行了什么东西. 1.我们在使用vue时必不可少的操作就是 var vm = new Vue({}),这样我们就创建了一个vue的实 ...
- 【Vue笔记】-- 详解vue生命周期
针对于Vue的生命周期进行详细的说明,方面加深对各个方法的引用. 引言: 前几天重新回顾vue官网时,看到vue的生命周期,想着自己用vue开发了快一年了,就总结总结vue知识,再次加深自己对vue的 ...
- 面试题之(vue生命周期)
在面试的时候,vue生命周期被考察的很频繁. 什么是vue生命周期呢? Vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染→更新→渲染.卸载等一系列过程,我们称这 ...
随机推荐
- Abp集成HangFire
简要说明 后台作业在系统开发的过程当中,是比较常用的功能.因为总是有一些长耗时的任务,而这些任务我们不是立即响应的,例如 Excel 文档导入.批量发送短信通知等. ABP vNext 提供了后台作业 ...
- [题解] 春荔(cut) | 贪心
题目大意 有一个长度为 \(n\) 的非负整数序列 \(a_i\),每次可以选择一段区间减去 \(1\),要求选择的区间长度 \(\in[l,r]\),问最少多少次把每个位置减成 \(0\). 不保证 ...
- 鸭的NOI ONLINE杂刷
好耶!洛谷账号橙了! 水题 [NOI Online #2 入门组] 未了 这就是一道贪心+二分查找,思路很好想 除法有精度问题,建议不使用除法 code [NOI Online #3 提高组] 水壶 ...
- 攻防世界web进阶题—unfinish
攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...
- python二分法、牛顿法求根
二分法求根 思路:对于一个连续函数,左值f(a)*右值f(b)如果<0,那么在这个区间内[a,b]必存在一个c使得f(c)=0 那么思路便是取中间点,分成两段区间,然后对这两段区间分别再比较,跳 ...
- Packed Ciphertexts in LWE-based Homomorphic Encryption:解读
本节内容记录阅读该论文的笔记 介绍 首先,介绍了两种明文"打包"的方法:PVW和SV PVW:对应论文(PVW:A framework for efficient and comp ...
- 125_Power BI 中 DAX 的性能测试
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 最近在看DAX"圣经"第二版<The Definitive Guide to DAX ...
- autoit 脚本开发踩坑点
原文 1. 获取不到点击 <input type='file'/> 后弹出的window 根本原因是 _IEAction 阻塞,见第4点 解决办法: ;bad code $oIE = _I ...
- Android Studio中一套代码多版本打包
一套代码达到以下效果: 打包不同applicationId能同时安装在同一手机上 不同logo,app名称, 不同第三方SDK接入配置(例如微信分享appid,激光推送appkey) 能区分debug ...
- JavaSE_多线程入门 线程安全 死锁 状态 通讯 线程池
1 多线程入门 1.1 多线程相关的概念 并发与并行 并行:在同一时刻,有多个任务在多个CPU上同时执行. 并发:在同一时刻,有多个任务在单个CPU上交替执行. 进程与线程 进程:就是操作系统中正在运 ...