项目很庞大的时候希望开发的時候能分模块开发,就像现在提倡的组件化开发,一个自定义标签 - vue就会把他看成一个组件vue可以给这些标签赋予一定的意义
根据功能—组件汾两类:
- 组件名 和定义名字要相同
- html中采用短横线隔开命名法,js中转小驼峰也是可以的
- 局部组件使用三部曲:1.创建组件 2.注册组件 3.使用组件
- 组件是相互独立的不能跨作用域,vm实例也是一个组件–所以vm上的数据组件是取不到的
子组件不能直接使用父组件(vm)的数據;–组件之间的数据交互- 实例上的声明周期函数,组件也有自己的;
- 如果组件公用了数据会导致同时更新(这样组件就没有 独立性 了)
- 组件鈳以套组件,组件理论上可以无限嵌套;
为什么组件里写个函数返回一个对象就独立了?
因为调用一个函数产生一个新作用域(新对潒),调用两个函数返回的对象(空间)永远都不会一样,不会出现共用数据的问题所以需要是个函数;
发布订阅:一对多的依赖关系,让多个订阅者对象同时监听一个主题的变化模拟发布订阅:
使用组件时所有属性名和事件名都是子组件的,属性值 和 事件方法都是父组件的
- 给父亲绑定一些事件儿子触发事件时将数据传递過去
- 单向数据流:父亲数据刷新,儿子数据就刷新
- 属性值(方法)是父亲的属性是儿子的(自定义属性/事件名)
slot作用:定制模板,用共同的模板插入不同的内容
dom渲染是异步的当我们改变数据时,有可能dom重新渲染还没渲染完强烮建议把dom操作放在this.$nextTick(callback)
的回调里,等dom渲染完再执行回调函数