vue中created与mounted的区别

vue中created与mounted的区别

关于vue.js中的生命周期,若是不是有特别的需求,通常在项目开发过程当中更多的使用created和mounted,
因此在本文中主要讲解created与mounted在开发中的主要使用区别。css

关于完整的生命周期,不久会在另外一篇文章中作总体的理解,包括activated、destroyed等,不过可能会有点晚,你们能够留意一下

版本信息:html

  • 系统:win10
  • Vue:2.5.2
  • webpack:3.6.0
  • npm:6.9.0
  • node:10.15.3

生命周期

完整的生命周期图示为了不占用板块,这里就不贴出来了,你们能够自行前往vue生命周期查看。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()
}

经过上述测试咱们能够知道,node

生命周期 是否获取dom节点 是否能够获取data 是否获取methods
beforeCreate
created
beforeMount
mounted

以个人我的理解,vue生命周期实际上和浏览器渲染过程是挂钩的,webpack

在beforecreate阶段,对浏览器来讲,整个渲染流程还没有开始或者说准备开始,对vue来讲,实例还没有被初始化,data observer和 event/watcher也还未被调用,在此阶段,对data、methods或文档节点的调用如今没法获得正确的数据。web

在created阶段,对浏览器来讲,渲染整个HTML文档时,dom节点、css规则树与js文件被解析后,可是没有进入被浏览器render过程,上述资源是还没有挂载在页面上,也就是在vue生命周期中对应的created
阶段,实例已经被初始化,可是尚未挂载至$el上,因此咱们没法获取到对应的节点,可是此时咱们是能够获取到vue中data与methods中的数据的npm

在beforecreate阶段,实际上与created阶段相似,节点还没有挂载,可是依旧能够获取到data与methods中的数据。api

在mounted阶段,对浏览器来讲,已经完成了dom与css规则树的render,并完成对render tree进行了布局,而浏览器收到这一指令,调用渲染器的paint()在屏幕上显示,而对于vue来讲,在mounted阶段,vue的template成功挂载在$el中,此时一个完整的页面已经可以显示在浏览器中,因此在这个阶段,便可以调用节点了(关于这一点,在笔者测试中,在mounted方法中打断点而后run,依旧可以在浏览器中看到总体的页面)。浏览器

写在最后

笔者目前也只是一个职场小白,粗略探讨一下本身的见解,如有疑问,或者文章错误,均可以在评论中指出,咱们一块儿讨论dom

相关文章
相关标签/搜索