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 相关文章推荐
13 款最热门的 jQuery 图像 360 度旋转插件推荐
Dec 09 Javascript
JavaScript实现SHA-1加密算法的方法
Mar 11 Javascript
JavaScript中的fontsize()方法使用详解
Jun 08 Javascript
优化RequireJS项目的相关技巧总结
Jul 01 Javascript
Javascript实现单例模式
Jan 24 Javascript
jsTree使用记录实例
Dec 01 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
Nov 03 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
Feb 15 Javascript
js实现数据导出为EXCEL(支持大量数据导出)
Mar 31 Javascript
基于JQuery和DWR实现异步数据传递
Oct 16 jQuery
用vue设计一个日历表
Dec 03 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
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
php+highchats生成动态统计图
2014/05/21 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP实现的简单适配器模式示例
2017/06/22 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
2013/04/26 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
微信小程序实现传参数的几种方法示例
2018/01/10 Javascript
javascript深拷贝、浅拷贝和循环引用深入理解
2018/05/27 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
Python正则表达式使用经典实例
2016/06/21 Python
python处理Excel xlrd的简单使用
2017/09/12 Python
python中format()函数的简单使用教程
2018/03/14 Python
Python 通配符删除文件的实例
2018/04/24 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
详解python命令提示符窗口下如何运行python脚本
2020/09/11 Python
css3中的calc函数浅析
2018/07/10 HTML / CSS
迪卡侬印度官网:购买所有体育用品
2017/06/24 全球购物
酒店实习个人鉴定
2013/12/07 职场文书
工程售后服务承诺书
2014/05/21 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
财务工作犯错检讨书
2014/10/07 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
5.12护士节活动总结
2015/02/10 职场文书
运动会广播稿50字
2015/08/19 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python