对vue生命周期的理解

181 阅读1分钟

1:官网贴图表明一切

2:vue-cli中的vue实例化


3:html页面中引入cdn方式的vue实例化

<html>
  <head>
	  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <button @click="changeText">{{text}}</button>
    </div>
  </body>
  <script type="text/javascript">
    var vm = new Vue({
	el:'#app',
	data(){
	  return {
		text: 'hello'
		}
	  },
	  methods: {
		changeText(){
			this.text = this.text+1
		}
	}
	})
	console.log('this', this)
	</script>
</html>

生命周期钩子函数

1: beforeCreate
此时vue实例刚被创建,它会初始化生命周期、事件、 props、 methods、 data、 computed 与 watch等
此时data和dom都还未被初始化

2: created
data已经被初始化,并且完成了数据监听设置
此时dom还未被初始化

3: beforeMount

4:mounted
完成组件的挂载

5:beforeUpdate
6:update
7:brforeDestroy
8:destroyed

vm实例刚被创建 ==> 此时DOM元素和data数据还没有被初始化 ==>
遍历对象的属性(Object.defineProperty 设置成可观察模式,数据监听) ==> 
模版编译 ==> render function 生成虚拟DOM ==> 生成真实DOM ==> 
数据渲染 ==> 监听数据变化==> 
虚拟DOM的diff和patch操作进行异步更新

//生命周期的钩子函数中this指向调用它的vue实例

4:额外注意点补充

1: 组件的data为什么必须是函数
保证组件之间的数据独立性

5:vue组件之间的通信方式

1:父子组件 props/$emit
2:兄弟组件 中央事件总线 $emit/$on
3:父子组件 $ref/$parent/$children
4:vuex--全局通信(实现机制)