Vue
Vue
Baseline: Vue 3.5 stable, 3.6 in RC (Vapor Mode). See ../../STACK_BASELINE.md.
Full Vue coverage to the same depth as ../05_react/. Written assuming React fluency where the analogue helps, but it does not depend on it.
Core
Reactivity
Components
Rendering and internals
Application concerns
| File |
Covers |
| 15_vue_router.md |
routing, guards, lazy routes, data loaders |
| 10_pinia.md |
state management (and where Vuex still appears) |
| 23_data_fetching.md |
TanStack Query, Pinia Colada, Nuxt’s useAsyncData |
| 21_forms_and_validation.md |
v-model depth, VeeValidate, schema validation |
| 11_nuxt.md |
SSR, SSG, ISR, server routes |
| 17_typescript_with_vue.md |
typed props, emits, generics, vue-tsc |
| 22_component_libraries.md |
Vuetify, PrimeVue, Nuxt UI, Reka UI, headless versus styled |
| 14_testing.md |
Vue Test Utils and Vitest |
Comparison
| File |
Covers |
| 24_vue_vs_react.md |
the design differences and how to answer “which would you choose” |
React to Vue cheat sheet
| React |
Vue 3 |
useState |
ref (use it for objects too) |
useMemo |
computed |
useEffect |
watchEffect (auto-track) or watch (explicit) |
useRef (DOM) |
useTemplateRef |
useContext |
provide / inject |
children prop |
default slot <slot /> |
| render prop |
scoped slot |
forwardRef |
template ref + defineExpose |
| fragments |
<template> |
React.lazy + <Suspense> |
defineAsyncComponent + <Suspense> |
createPortal |
<Teleport> |
| Redux / Zustand |
Pinia |
| custom hooks |
composables |
| React Router |
Vue Router (official) |
| Next.js |
Nuxt (official) |
| React Compiler |
not needed — reactivity is fine-grained already |
| controlled inputs |
v-model |
The genuinely new ideas coming from React: reactivity is automatic via Proxy rather than re-run-and-diff, you mutate state directly, there are no dependency arrays, slots are the composition primitive, and the SFC keeps template, logic and scoped styles in one file.
Cross-references