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 import css实例代码
Jul 18 Javascript
在模板页面的js使用办法
Apr 01 Javascript
理解JAVASCRIPT中hasOwnProperty()的作用
Jun 05 Javascript
JavaScript移除数组元素减少长度的方法
Sep 05 Javascript
js setTimeout opener的用法示例详解
Oct 23 Javascript
jquery动态添加删除(tr/td)
Feb 09 Javascript
详解JavaScript调用栈、尾递归和手动优化
Jun 03 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
详解elementui之el-image-viewer(图片查看器)
Aug 30 Javascript
JavaScript对象原型链原理解析
Jan 22 Javascript
vue实现选中效果
Oct 07 Javascript
如何理解Vue简单状态管理之store模式
May 15 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 移除数组重复元素的一点说明
2008/11/27 PHP
初品cakephp 入门基础
2012/02/16 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
jQuery左右滚动支持图片放大缩略图图片轮播代码分享
2015/08/26 Javascript
AngularJS手动表单验证
2016/02/01 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
AngularJS 打开新的标签页实现代码
2017/09/07 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
微信小程序扫描二维码获取信息实例详解
2019/05/07 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
Django框架使用mysql视图操作示例
2019/05/15 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
应届毕业生的自我鉴定
2013/11/13 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
横幅标语大全
2014/06/17 职场文书
服务理念标语
2014/06/18 职场文书
校本研修个人总结
2015/02/28 职场文书
迎国庆主题班会
2015/08/17 职场文书
怎样评估创业计划书是否有可行性?
2019/08/07 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
Python Flask实现进度条
2022/05/11 Python