- SPA (Single-Page Application): server trả về một trang HTML ban đầu, sau đó JavaScript đảm nhận toàn bộ — chuyển "trang" bằng client-side routing (đổi URL qua History API, render view mới) không reload trình duyệt. React/Vue/Angular là công cụ dựng SPA điển hình.
- MPA (Multi-Page Application): mỗi URL là một trang HTML riêng do server render; mỗi lần điều hướng là một lần tải trang đầy đủ.
Đánh đổi chính:
- SPA: điều hướng mượt, giữ được state giữa các view (giỏ hàng, form đang nhập), ranh giới FE/BE rõ (API) — nhưng tải JS ban đầu nặng, SEO cần thêm SSR/prerender, và phải tự lo routing, quản lý state, code splitting.
- MPA: đơn giản, SEO tự nhiên, mỗi trang chỉ tải phần nó cần — nhưng mỗi lần chuyển trang là màn hình trắng ngắn và state client mất.
Chọn: app tương tác nhiều, phiên dài (dashboard, editor, chat) → SPA; site thiên nội dung (blog, tin tức, landing, e-commerce đặt nặng SEO) → MPA. Thực tế hiện nay meta-framework (Next.js, Nuxt) lai hai mô hình: server render từng trang cho SEO + client navigation mượt như SPA.