My name is jason green, team lead of the CMS project at the mail online.
When we start a few years ago, we decided, among other things, that we wanted a
Component based architecture – this is before react and web components
Reactive architecture
So we created milo.js
Capability to declare that x = y + 1, and will always equal y + 1
Can be explicitly, or implicitly (briefly explain)
If you work on a jQuery application and maintain state with a lot of listeners that change bits and pieces of the view and other models this would be an implicitly reactive system.
Why is this needed?
Highly wysiwyg
Everything on the page is a component with it’s own options, state, behaviors
Not only are there a lot of parts of an article, but there is a lot of state sharing going on
Inspector
Image and component links
Makes the whole thing more declarative
Example with model to contoller
Most probably know MVC
Also probably know you end up with fat controllers
Whether it is model subscriptions, or watchers a lot of code will go into keeping states synched up
Reactive connectors allow us to concentrate on what’s important and leave the sharing of state to the framework
Trade off with more moving parts
Facetted architecture instead of deep classical heirarchies
Data facet is responsible for dom data
Each client has it’s own local DB
This synchs with the server using the same low level change messages that milo uses in the client to connect to data sources
Milo models can run on the server or the client, so it’s the same code keeping things together