虚拟dom及父子传信

Props
父组件给子组件传递数据的时候子组件需要利用props的属性来确定自己的预期数据。中间有- 需要写出驼峰的形式来接收。如果儿子没有通过props属性接受传递过来的数据,则数据会以自定义属性的方式,放在儿子最外层的根元素上面。
为什么组件中的data必须是一个函数返回对象的形式?
目的是让每一个实例可以维护一份被返回对象的独立的拷贝 (每个组件使用到的数据地址不一样)内部必须要返回一个对象的写法,这样就可以保证每个组件里面用到的数据对象都是唯一的。
组件之间的作用域是相互独立的,组件的数据默认只能组件的模板里面使用。

每一个组件或者实例都会有自定义事件,和触发事件的能力,父组件给子组件绑定一个自定义事件,这个事件的处理程序却是父组件的一个方法 <son @change=“父组件的函数”>。当子组件触发这个事件的时候,相当于父组件的方法被执行了 (this.$emit(自定义事件,参数))

组件间不仅可以用过root/root/parent/$children来获取对应关系的组件,父组件还可以主动的通过ref为子组件做标记 也可以给dom做标记也会形成ref链,也可以交互。

在vue内部的话,其实有虚拟dom
虚拟dom其实是里面内存型对象(js内存对象) 属于内存数据真实dom的一层映射
1.内存中生成一颗虚拟dom树
虚拟dom及父子传信
2.将内存中的虚拟dom树初始化渲染成真实dom树
3.当我们修改data里面的数据的时候
4.将之前的虚拟dom树结合新的数据生成一颗新的虚拟dom树

5.将此次生成好的新的虚拟dom树与上一次的虚拟dom树结构进行对比,对比差异(diff算法)
6.将对比出来的差异的部分进行重新真实dom结构的渲染
内部当数据变化,生成一颗新的虚拟dom树,与上一次的虚拟dom树结构进行对比。也就是说,当数据变化的时候,大量操作的是虚拟dom,而虚拟dom属于内存数据,操作起来性能要高的多。而真实的dom操作,只有在追加的那一刻
才会进行操作,大大提升了性能。