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 相关文章推荐
flexigrid 类似ext grid的JS表格代码
Jul 17 Javascript
JS控制文本框textarea输入字数限制的方法
Jun 17 Javascript
简约JS日历控件 实例代码
Jul 12 Javascript
一个js控制的导航菜单实例代码
Dec 03 Javascript
javascript怎么禁用浏览器后退按钮
Mar 27 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
Jun 22 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
Apr 12 Javascript
JavaScript必知必会(六) delete in instanceof
Jun 08 Javascript
Bootstrap CSS组件之下拉菜单(dropdown)
Dec 17 Javascript
小程序rich-text组件如何改变内部img图片样式的方法
May 22 Javascript
prettier自动格式化去换行的实现代码
Aug 25 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 02 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 date与gmdate的获取日期的区别
2010/02/08 PHP
PHP使用PDO操作sqlite数据库应用案例
2019/03/07 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
字符串反转_JavaScript
2016/04/28 Javascript
JS控制层作圆周运动的方法
2016/06/20 Javascript
Jquery树插件zTree实现菜单树
2017/01/24 Javascript
javascript遍历json对象的key和任意js对象属性实例
2017/03/09 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python模块导入的细节详解
2018/12/10 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
Python 批量刷博客园访问量脚本过程解析
2019/08/30 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
Python实现对adb命令封装
2020/03/06 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
北承题目(C++)
2012/05/16 面试题
电子商务专业自我鉴定
2013/12/18 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
2014年心理健康教育工作总结
2014/12/06 职场文书
就业导师推荐信范文
2015/03/27 职场文书
学校教师培训工作总结
2015/10/14 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
《包身工》教学反思
2016/02/23 职场文书
Python异常类型以及处理方法汇总
2021/06/05 Python
使用CSS实现小三角边框原理解析
2021/11/07 HTML / CSS