Communication between components (universal)
Communication is important, especially neighborhood communication ๐ Letโs collect communication approaches between components.
I remember a time when I jumped to Angular and while developing I had to find the best way to communicate between components. In Angular we may dispatch events ($emit, $broadcast), in React use Redux etc. Each framework has own approaches, but we may have general solutions no matter of framework, web components. So, letโs collect them.
We are going to talk about neighborhood communication ๐
Custom Events
Custom Event is a good approach to dispatch events and listen. You should listen event from target Element
, Document
, and Window
, but the target may be any object that supports events (such as XMLHttpRequest
). It does not work in IE but for that we have a Polyfill solution.
So, Custom Event Service is going to look like that:
Communication phase:
Publish/Subscribe
The Publish/Subscribe pattern encourage us to think hard about the relationships between different parts of our application.
Publish/Subscribe pattern saves a TOPIC name and reference to a callback. When you publish the TOPIC it calls the callback.
๐ฏ Difference between Custom Event and Pub/Sub
Callbacks are not subscribed to particular events. Every payload is dispatched to every registered callback.
Watching DOM tree
Another way to communicate is watching DOM changes. You may observe node element changes (attributes, childList, characterData) and when DOM changes occur observer will invoke a specified callback function.