The browser
- has been evolving for more than 20 years
- recognizes the multitudes of interests that exist within a web application
- is mostly open, transpent and easy-to-use
- privides a built-in IDE for debugging and analysing your application
Parts of an web app's frontend:
- Html, Css, JavaScript
- Tests, Documentation
- Configuration and Localization strings
- Images, Sounds, Videos, Fonts
- and all the supporting infrastructure
Concepts:
- DOM, Rendering, the Event loop
- Networking (Ajax) - Headers, Query Params, etc
- Web APIs: History, Routing, Storage, Caching
- Web APIs: Geolocation, Canvas, Audio
- Security
- Tracking, Analytics and Ads
- Web Components, Web Workers, Web Assembly
Displaying a static page
Displaying a scripted page
Technical trade-offs:
- Single Page vs Reloading
- Server side vs Client side rendering
- Newer features vs older browsers suppot
- Resource bundling vs no build step
- Various tools and framework choices
- Various design and usability choices
Application structure
Model-View-Controller
vs
Components
Two-way binding
vs
Unidirectional data flow
Frontend Frameworks
- Angular
- Aurelia
- Polymer
- React
- Vue
and many others
Security
- Code injection (XSS)
- Malicious communication (Tracking)
- Data Leak / Loss (Phishing)
- Dark patterns