生命周期

  beforecreate :
  一般使用场景是在加 loading事件 的时候
  created :
  处于loading结束后,还做一些初始化,实现函数自执行(data数据已经初始化,但是DOM结构渲染完成,组件没有加载)
  beforemount :
  处于组件创建完成,但未开始执行操作
  mounted :
  处于发起后端请求,获取数据,配合路由钩子执行操作(DOM渲染完成,组件挂载完成 )
  beforeupdate、updated :
  处于数据更新的前后
  beforeDestroy :
  当前组件还在的时候,想删除组件
  destroyed :
  当前组件已被销毁,清空相关内容

created 与 mounted 的区别

  created :
  在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
  mounted :
  在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

mounted 与 methods 的区别

  mounted :
  是生命周期方法之一,会在对应生命周期时执行。

  methods :
  是Vue实例对象上绑定的方法,供当前Vue组件作用域内使用,未调用不会执行,只执行逻辑,返回值可有可无。

computed 与 watched 的区别

  computed :
  是计算属性,也可以理解为一个方法。其中计算的结果如果不发生改变就不会触发,且必须返回一个值并在DOM中绑定的才能取得值。他可以自动获取数据的改变。

  watched :
  属性是手动定义的所需监听的值,不同的数据可以在其中多次定义监听值,这时会消耗一定性能,他并不能像computed那样自动改变。

补充如下:
相同点:
如果作为模板的数据显示,二者能实现响应的功能,唯一不同的是methods定义的方法需要执行
不同点:
1.computed 会基于响应数据缓存,methods不会缓存;
2.diff之前先看data里的数据是否发生变化,如果没有变化computed的方法不会执行,但methods里的方法会执行
3.computed是属性调用,而methods是函数调用

  1. <script>
  2. let vm=new Vue({
  3. el:"#app",
  4. data:{
  5. name:"onceweb"
  6. },
  7. beforeCreate(){
  8. console.log("创建之前")
  9. console.log(this.$el)
  10. console.log(this.$data)
  11. },
  12. created(){
  13. console.log("成功创建")
  14. console.log(this.$el)
  15. console.log(this.$data)
  16. },
  17. beforeMount(){
  18. console.log("挂载之前")
  19. console.log(this.$el)
  20. console.log(this.$data)
  21. },
  22. mounted(){
  23. console.log("成功挂载")
  24. console.log(this.$el)
  25. console.log(this.$data)
  26. },
  27. beforeUpdate(){
  28. console.log("更新之前")
  29. let name = this.$refs.app.innerHTML
  30. console.log('name:'+name)
  31. },
  32. updated(){
  33. console.log("成功更新")
  34. let name = this.$refs.app.innerHTML
  35. console.log('name:'+name)
  36. },
  37. beforeDestory(){
  38. console.log("销毁之前")
  39. },
  40. destoryed(){
  41. console.log("成功销毁")
  42. }
  43. });
  44. </script>

image.png