vue中created和mounted的区别浅析


Posted in Javascript onAugust 13, 2019

前言

关于vue.js中的生命周期,如果不是有特别的需求,一般在项目开发过程中更多的使用created和mounted,
所以在本文中主要讲解created与mounted在开发中的主要使用区别。

关于完整的生命周期,不久会在另一篇文章中做整体的理解,包括activated、destroyed等,不过可能会有点晚,大家可以留意一下

版本信息:

  • 系统:win10
  • Vue:2.5.2
  • webpack:3.6.0
  • npm:6.9.0
  • node:10.15.3

生命周期

完整的生命周期图示为了避免占用板块,这里就不贴出来了,大家可以自行前往vue生命周期查看。

浏览器渲染过程

具体的浏览器渲染过程我会过几天另外写一遍文章,大家可以去我的文章看看。

  • 构建DOM树
  • 构建css规则树,根据执行顺序解析js文件。
  • 构建渲染树Render Tree
  • 渲染树布局layout
  • 渲染树绘制

生命周期中的浏览器渲染

这里是官方文档对生命周期api的解释,大家可以看看

以下为测试vue部分生命函数

beforeCreate(){
 console.log('beforecreate:',document.getElementById('first'))//null
 console.log('data:',this.text);//undefined
 this.sayHello();//error:not a function
},
created(){
 console.log('create:',document.getElementById('first'))//null
 console.log('data:',this.text);//this.text
 this.sayHello();//this.sayHello()
},
beforeMount(){
 console.log('beforeMount:',document.getElementById('first'))//null
 console.log('data:',this.text);//this.text
 this.sayHello();//this.sayHello()
},
mounted(){
 console.log('mounted:',document.getElementById('first'))//<p></p>
 console.log('data:',this.text);//this.text
 this.sayHello();//this.sayHello()
}

通过上述测试我们可以知道,

生命周期 是否获取dom节点 是否可以获取data 是否获取methods
beforeCreate
created
beforeMount
mounted

以我的个人理解,vue生命周期实际上和浏览器渲染过程是挂钩的,

在beforecreate阶段,对浏览器来说,整个渲染流程尚未开始或者说准备开始,对vue来说,实例尚未被初始化,data observer和 event/watcher也还未被调用,在此阶段,对data、methods或文档节点的调用现在无法得到正确的数据。

在created阶段,对浏览器来说,渲染整个HTML文档时,dom节点、css规则树与js文件被解析后,但是没有进入被浏览器render过程,上述资源是尚未挂载在页面上,也就是在vue生命周期中对应的created
阶段,实例已经被初始化,但是还没有挂载至$el上,所以我们无法获取到对应的节点,但是此时我们是可以获取到vue中data与methods中的数据的

在beforecreate阶段,实际上与created阶段类似,节点尚未挂载,但是依旧可以获取到data与methods中的数据。

在mounted阶段,对浏览器来说,已经完成了dom与css规则树的render,并完成对render tree进行了布局,而浏览器收到这一指令,调用渲染器的paint()在屏幕上显示,而对于vue来说,在mounted阶段,vue的template成功挂载在$el中,此时一个完整的页面已经能够显示在浏览器中,所以在这个阶段,即可以调用节点了(关于这一点,在笔者测试中,在mounted方法中打断点然后run,依旧能够在浏览器中看到整体的页面)。

写在最后

笔者目前也只是一个职场小白,粗略探讨一下自己的看法,若有疑问,或者文章错误,都可以在评论中指出,我们一起讨论

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
音乐播放用的的几个函数
Sep 07 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
Jquery easyUI 更新行示例
Mar 06 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
Nov 18 Javascript
jquery图片滚动放大代码分享(2)
Aug 28 Javascript
JavaScript实现汉字转换为拼音的库文件示例
Dec 22 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
Dec 29 Javascript
jquery鼠标悬停导航下划线滑出效果
Sep 29 jQuery
express.js中间件说明详解
Mar 19 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
vscode自定义vue模板的实现
Jan 27 Vue.js
微信小程序实现点击空白隐藏的方法示例
Aug 13 #Javascript
微信小程序使用npm包的方法步骤
Aug 13 #Javascript
Vue中的transition封装组件的实现方法
Aug 13 #Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
Aug 12 #Javascript
详解json串反转义(消除反斜杠)
Aug 12 #Javascript
json 带斜杠时如何解析的实现
Aug 12 #Javascript
electron实现静默打印的示例代码
Aug 12 #Javascript
You might like
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
php设计模式之适配器模式原理、用法及注意事项详解
2019/09/24 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
ExtJS GridPanel 根据条件改变字体颜色
2010/03/08 Javascript
javascript arguments使用示例
2014/12/16 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
深入浅出理解javaScript原型链
2015/05/09 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
jQuery 获取select选中值及清除选中状态
2016/12/13 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
[53:20]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 VG vs OG
2018/04/03 DOTA
python中self原理实例分析
2015/04/30 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
2015/05/20 Python
Python时间戳使用和相互转换详解
2017/12/11 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
新加坡网上美容店:Hermo新加坡
2019/06/19 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
计算机专业毕业生推荐信
2013/11/25 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
教师求职自荐书
2014/06/14 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
初中教师个人工作总结
2015/02/10 职场文书
Python实现位图分割的效果
2021/11/20 Python