Flux
At this stage, we encounter the first design pattern (and the improvements we can make). Flux is a pattern proposed by Facebook that defines the flow of data in an interface.
Note
Flux is not a library, but Facebook has released a few tools that help implement the design pattern. You don't have to use those tools to implement Flux. To install it, run npm install --save flux
in addition to the previous dependencies.
We implemented something very close to Flux, but our implementation is at a slight disadvantage. Our Backend
class does too much. We call it directly to add and fetch pages. It emits events when new pages are added. It's tightly coupled with the components that use it.
So, we'd have a hard time replacing it with a new Backend
class (unless the methods, events and return values were in the exact same format). We'd have a hard time using multiple data backends. We don't even really have unidirectional flow of data because we send and receive data from Backend
.
Flux differs here...