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 相关文章推荐
jQuery html()等方法介绍
Nov 18 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
Jun 25 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
Jul 26 Javascript
node.js中的fs.linkSync方法使用说明
Dec 15 Javascript
jQuery表单域选择器用法分析
Feb 10 Javascript
JQuery中基础过滤选择器用法实例分析
May 18 Javascript
JavaScript每天必学之基础知识
Sep 17 Javascript
简述Angular 5 快速入门
Nov 04 Javascript
微信小程序实现折叠与展开文章功能
Jun 12 Javascript
JavaScript使用ul中li标签实现删除效果
Apr 15 Javascript
layUI实现三级导航菜单效果
Jul 26 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
Mar 17 Javascript
微信小程序实现点击空白隐藏的方法示例
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
PHP中的cookie
2006/11/26 PHP
php桌面中心(二) 数据库写入
2007/03/11 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
php发送邮件的问题详解
2015/06/22 PHP
PHP7基于curl实现的上传图片功能
2018/05/11 PHP
PHP之header函数详解
2021/03/02 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
更正确的asp冒泡排序
2007/05/24 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
Javascript事件实例详解
2013/11/06 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
完美解决UI-Grid表格元素中多个空格显示为一个空格的问题
2017/04/25 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
解决vue无法设置滚动位置的问题
2018/10/07 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
layui实现数据分页功能
2019/07/27 Javascript
用Python中的字典来处理索引统计的方法
2015/05/05 Python
python使用htmllib分析网页内容的方法
2015/05/08 Python
浅谈对yield的初步理解
2017/05/29 Python
python实现图片九宫格分割
2021/03/07 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
python3.7添加dlib模块的方法
2020/07/01 Python
浅析关于Keras的安装(pycharm)和初步理解
2020/10/23 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
Html5移动端div固定到底部实现底部导航条的几种方式
2021/03/09 HTML / CSS
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
代办社保委托书范文
2014/10/06 职场文书
赞美教师的句子
2019/09/02 职场文书
四年级作文之植物
2019/09/20 职场文书
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript