Introduction to MEAN
Junghoo Cho
Traditional Web Development
- Stack
- HTTP: Apache/Nginx
- Server runtime: PHP/Servlet
- Data storage: MySQL
- (Almost) all code runs on the server
- Browser is a passive HTML/CSS rendering engine
After AJAX
- Most code runs in the browser as JavaScript
- Server has gradually transformed to “back-end service” that provides data-persistence and transaction support
- Benefits
- Better user experience
- Less load on the server (leading to better server scalability)
Challenges in AJAX Development
- Increasing complexity in the JavaScript code
- Impedance mismatch
- JavaScript on client, PHP/Java on server
- JSON for data transport, relation for data storage
Developer “Wishlist”
- Q: Can we use JavaScript for both client and server development?
- Q: Can we use JSON as the data model for storage engine?
- Q: Any way to reduce complexity of client-side development?
Modern Full-Stack Web Development
- Data Engine: MongoDB
- Server Runtime: Node.js and its “packages” (e.g., Express)
- Client Runtime: Angular/React/Vue, …