Progressive means you can start small—a single widget on a legacy PHP page—and grow into a full single-page application without a rewrite day one.
Levels of adoption
- Script tag + CDN — enhance one section (this playground uses the same idea)
- Build step with Vite — Single File Components (
.vue), hot reload, TypeScript - Full SPA — Vue Router, Pinia for state, API layer, testing
- Meta-frameworks — Nuxt for SSR, file-based routing, and deployment patterns
Why teams like progressive adoption
- Ship a dashboard widget before committing the whole frontend
- Keep server-rendered pages for SEO while Vue handles interactive islands
- Migrate feature-by-feature instead of big-bang rewrites
Compared to React’s ecosystem
React is often described as a library—you choose router and data layers explicitly. Vue ships more built-in guidance (templates, reactivity, official router and state libraries) while still allowing escape hatches. Neither is universally “better”; match team skills and migration constraints.
Important interview questions and answers
- Q: Can Vue coexist with server-rendered HTML?
A: Yes—mount on a#appnode inside otherwise static pages, similar to React roots. - Q: When would you skip a full SPA?
A: Marketing pages, lightly interactive forms, or gradual migration where bundle size and complexity should stay minimal.
Self-check
- Describe one scenario where CDN Vue on one page is enough.
- What changes when you move to Vite + SFCs?