Reactive UI
Table of Contents
1. Background
3. Related Notes
- file layout
- build tools
- design guidelines
- animations
4. Implementation
4.1. TODO Project Initiation
Broadly when looking at the web there are several key milestones:
- 1995 - 1998: design-driven: most of the development effort is moved toward addressing the limitations created by browser wars; there are few cross-platform
- 1999 - 2005: z-index: if interactivity is provided it's generally in the form of creating overlays or core features
- 2006 - 2011: jQuery: events, triggers, linting
- 2012 - 2014: CoffeeScript (and broadly other transpilers)
- 2012 - 2014: MVC, history, functional programing, transpilers
- 2013 - 2016: Frameworks: Ember and Angular:
- 2014 - 2018: Reactive UIs, immutability, typed javascript
4.2. Design
- what data is the user creating when they interact with our application
- what data are we persisting, obtaining, or reducing about the
- what UI will we be showing and hiding
- what are the routes that we expect would need to be supported; in particular when has the user performed a sufficiently interesting chance in view that they would need to have some management over the
- what is the sequencing that will be used to build out the feature
- what is out support matrix for the feature
- what are the existing libraries (for both display and functionality that we already have been provided
5. Examples
- high-level feature requirements
- scoping feature criticality
- high-level task decomposition
- separating UI components from UI-enhancing features
5.1. Virtual DOM
Of the three cited links, two no longer resolve to their original content: facebook.github.io/react/docs/glossary.html now returns HTTP 404 (React's docs moved off facebook.github.io years ago), and requirebin.com now serves an unrelated gambling/spam site at the same URL instead of the original demo. The gist.github.com/Raynos/8414846 link is still live, and its content shows the mechanism actually in use is the `h()` "hyperscript" function from the virtual-dom/Mithril ecosystem, not "HyperText" as the body text below previously said — hypertext is the general HTML concept, hyperscript is the specific `h(tag, props, children)` templating pattern. Corrected below.
- https://facebook.github.io/react/docs/glossary.html
- http://requirebin.com/?gist=5492847b9a9025e64bab
- https://gist.github.com/Raynos/8414846
For these examples we'll be using hyperscript as the template language.
5.2. Site
- Site
- Header
- Footer
- Navigation
Generally we'll know about the core attributes we're expecting from a visitor (if authenticated or not, and if possessing a role or not).
5.3. TODO
5.4. Live Search
5.5. Maps
5.6. Dashboard
5.7. Non-Greenfield
6. Related
- Q1 2016 Review of React and Flux – React and Flux in detail
- ES6 Tooling and Study Paths (2016) – the tooling of the period
- JavaScript Transpilers – the transpiler options
- Typed Languages (Summer 2016) – the typed options