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 相关文章推荐
javascript类继承机制的原理分析
Sep 12 Javascript
Js-$.extend扩展方法使方法参数更灵活
Jan 15 Javascript
html页面显示年月日时分秒和星期几的两种方式
Aug 20 Javascript
JS操作JSON要领详细总结
Aug 25 Javascript
JS清空多文本框、文本域示例代码
Feb 24 Javascript
通过JS来动态的修改url,实现对url的增删查改
Sep 01 Javascript
使用jquery+CSS实现控制打印样式
Dec 31 Javascript
jQuery实现边框动态效果的实例代码
Sep 23 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
JS中图片压缩的方法小结
Nov 14 Javascript
Vue2.0结合webuploader实现文件分片上传功能
Mar 09 Javascript
webpack4 + react 搭建多页面应用示例
Aug 03 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
Laravel 中获取上一篇和下一篇数据
2015/07/27 PHP
Thinkphp框架开发移动端接口(1)
2016/08/18 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
js单例模式的两种方案
2013/10/22 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
JavaScript 表单处理实现代码
2015/04/13 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
JS实现的文件拖拽上传功能示例
2018/05/21 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
Python实现的生成自我描述脚本分享(很有意思的程序)
2014/07/18 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
python实现自动登录
2018/09/17 Python
python同步两个文件夹下的内容
2019/08/29 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
django框架两个使用模板实例
2019/12/11 Python
python GUI库图形界面开发之PyQt5开发环境配置与基础使用
2020/02/25 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
Easy Spirit官网:美国休闲鞋履中的代表品牌
2019/04/12 全球购物
中层干部岗位职责
2013/12/18 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
喝酒检查书范文
2014/02/23 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
医德医风学习心得体会
2016/01/25 职场文书
把77A收信机改造成收音机
2022/04/05 无线电