只适合面试概括,其中原理自行探索
1. props和$emit
2. $parent和$children
3. ref(组件上获取组件实例,dom上获取真实dom对象)
4. provide和inject 依赖注入(非响应式)
5. $attrs/$listeners (vue2.4+配合inheritAttrs为false使用)
6. EnvntBus(原理:一个新的vue实例,通过$on+$emit)
7. vuex(适合大型项目,5大属性+辅助函数)
8. 自行实现发布订阅
原理:对象存储+数组函数,每次订阅对应的属性新加函数,发布触发事件则执行该属性的数组里面的每个函函数
模拟:(只是模拟,方便理解发布订阅的。请考虑是否存在该订阅模式,如何移除订阅,一次订阅如何实现等问题)
let subscribe = {
'吃':【
()=>{console.log('早上吃')},
()=>{console.log('中午吃')},
()=>{console.log('晚上吃')}
】
}
subscribe['吃'].push(()=>{console.log('还要吃宵夜')})
subscribe['吃'].forEach(fn=> fn());
9. window属性
10. 路由带参(可以实现通信但不建议)
11. cookie,sessionStorage,localStorage