资讯专栏INFORMATION COLUMN

vue中created与mounted区别

wuaiqiu / 874人阅读

摘要:中与的区别关于中的生命周期,如果不是有特别的需求,一般在项目开发过程中更多的使用和,所以在本文中主要讲解与在开发中的主要使用区别。构建树构建规则树根据执行顺序解析文件。

vue中created与mounted的区别

关于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"))//

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,依旧能够在浏览器中看到整体的页面)。

写在最后

笔者目前也只是一个职场小白,粗略探讨一下自己的看法,若有疑问,或者文章错误,都可以在评论中指出,我们一起讨论

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/116246.html

相关文章

  • vuecreatedmounted区别

    摘要:中与的区别关于中的生命周期,如果不是有特别的需求,一般在项目开发过程中更多的使用和,所以在本文中主要讲解与在开发中的主要使用区别。构建树构建规则树根据执行顺序解析文件。 vue中created与mounted的区别 关于vue.js中的生命周期,如果不是有特别的需求,一般在项目开发过程中更多的使用created和mounted,所以在本文中主要讲解created与mounted在开发中...

    HackerShell 评论0 收藏0
  • 关于Vue实例的生命周期createdmounted区别

    摘要:通俗说就是实例从创建到销毁的过程,就是生命周期。在这一步,实例已完成以下的配置数据观测,属性和方法的运算,事件回调。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。个人网站:http://www.linganmin.cn 最近刚写了一个手机在线播放的H5电影站:...

    Integ 评论0 收藏0
  • 关于Vue实例的生命周期createdmounted区别

    摘要:通俗说就是实例从创建到销毁的过程,就是生命周期。在这一步,实例已完成以下的配置数据观测,属性和方法的运算,事件回调。 关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发。合适和够用是最完美的追求。个人网站:http://www.linganmin.cn 最近刚写了一个手机在线播放的H5电影站:...

    baukh789 评论0 收藏0
  • 前端面试题总结——VUE(持续更新

    摘要:前端面试题总结持续更新中是哪个组件的属性模块的组件。都提供合理的钩子函数,可以让开发者定制化地去处理需求。 前端面试题总结——VUE(持续更新中) 1.active-class是哪个组件的属性? vue-router模块的router-link组件。 2.嵌套路由怎么定义? 在 VueRouter 的参数中使用 children 配置,这样就可以很好的实现路由嵌套。 //引入两个组件 ...

    SimonMa 评论0 收藏0
  • vue学习笔记(二)

    摘要:供用户在相应的阶段对其进行操作。我们像下面这样使用这个指令大多数情况下,我们只需要使用与钩子函数。里提供了函数的简写形式钩子函数有两个常用的参数和。其他用法与全局自定义指令一致。 一、vue生命周期 vue实例从创建到销毁的过程,称为生命周期,共有八个阶段。 这八个阶段里分别有一个叫做钩子函数的实例选项。供用户在相应的阶段对其进行操作。 beforeCreate(){ //组件实例刚...

    klivitamJ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<