Knowledge sharing
Ideally, each micro frontend represents an isolated module, which works without dependencies and without any knowledge of the other micro frontends. Realistically, micro frontends will have dependencies and at least some knowledge of other micro frontends. These dependencies are usually the result of referencing parts such as components of other micro frontends.
There are two kinds of references that can be created from a micro frontend:
- Direct (or strong) references leading to tightly coupled modules
- Indirect (or weak) references leading to loosely coupled modules
Only loosely coupled modules can scale well. The problem with loosely coupled modules is that some conventions and contracts still need to be followed. For instance, if we emit an event with a certain name, potential listeners expect this name to remain the same. Once we change the name, the listeners cannot receive the associated event anymore – they’d need to change...