¿Qué es Vue.js?
Framework JavaScript progresivo para UIs y SPAs. Curva de aprendizaje menor que React. Vue 3 + Composition API.
¿Qué es Vue.js?
Vue.js es un framework JavaScript progresivo para construir interfaces de usuario y aplicaciones de página única. Creado por Evan You en 2014, Vue se distingue de React y Angular siendo accesible: la mayoría de los desarrolladores pueden ser productivos en Vue en horas en lugar de semanas. La versión principal actual es Vue 3 (lanzada en septiembre de 2020), que introdujo la Composition API junto con la Options API original.
La palabra "progresivo" en el lema de Vue importa. A diferencia de Angular (framework pesado, opinionado sobre todo) o React (librería ligera que requiere ensamblar tu propio ecosistema), Vue está diseñado para escalar con tus necesidades. Coloca una sola etiqueta <script> en una página HTML para añadir comportamiento reactivo a un widget. O usa el ecosistema completo de Vue (Vue Router, Pinia, Nuxt, Vite) para construir un SPA de producción. El mismo framework soporta ambos extremos.
Las dos APIs: Options vs. Composition
Options API (estilo Vue 2, todavía soportado en Vue 3)
Los componentes se declaran como objetos con secciones nombradas (data, methods, computed, watch, hooks de ciclo de vida):
export default {
data() {
return { count: 0 };
},
computed: {
doubled() { return this.count * 2; }
},
methods: {
increment() { this.count++; }
}
}Fácil de enseñar, fácil de leer, pero la lógica de una característica se dispersa por las secciones.
Composition API (predeterminado de Vue 3 para código nuevo)
La lógica se organiza por preocupación usando setup() y primitivas reactivas (ref, reactive, computed, watch):
import { ref, computed } from 'vue';
export default {
setup() {
const count = ref(0);
const doubled = computed(() => count.value * 2);
const increment = () => count.value++;
return { count, doubled, increment };
}
}Mejor para componentes complejos y reutilización de código vía composables (el equivalente de Vue a los React hooks). El azúcar sintáctico <script setup> lo hace aún más conciso.
El ecosistema de Vue (las partes que vienen con el framework)
- Vue Router — librería oficial de enrutamiento. Navegación SPA, parámetros de ruta, rutas anidadas, carga lazy, guards de ruta.
- Pinia — gestión de estado oficial (reemplazó a Vuex en Vue 3). Type-safe, integrado con devtools, API más simple que Redux.
- Vite — el propio servidor de dev y herramienta de build de Evan You. Usado como predeterminado de Vue desde 2021. Hot module reload sub-segundo.
- Vue DevTools — extensión de navegador para inspeccionar componentes, estado y eventos.
- Nuxt — meta-framework sobre Vue (equivalente de Vue a Next.js). SSR, enrutamiento basado en archivos, auto-imports, rutas API integradas.
Vue vs. React vs. Angular (la comparación honesta)
| Aspecto | Vue | React | Angular |
|---|---|---|---|
| Tamaño de bundle | ~33KB | ~45KB (con ReactDOM) | ~150KB+ |
| Curva de aprendizaje | Suave | Moderada (JSX, hooks) | Empinada |
| Templates | Tipo-HTML con directivas | JSX (tipo-JS) | HTML con sintaxis Angular |
| Gestión de estado | Pinia | Redux/Zustand/Jotai | NgRx/Akita |
| Estilo | CSS scoped, módulos CSS | CSS-in-JS, módulos | Encapsulado por componente |
| Pool de contratación | Más pequeño pero creciendo | El más grande | Inclinado a empresa |
| Mejor para | Apps con equipos cómodos con HTML | Apps que necesitan ecosistema extenso | Apps empresariales grandes |
Consideraciones comunes de rendimiento de Vue
- v-for + v-if en el mismo elemento. No lo hagas.
v-iftiene precedencia en Vue 3, lo que significa quev-forni siquiera se ejecuta cuando v-if es false (bueno para saltar pero confuso). Mejor: envuelve en una<template>con v-if o pre-filtra el array. - Watchers explotando en cantidad. Cada
watchcrea una dependencia de reactividad. UsawatchEffectcon moderación. Prefierecomputedcuando puedas. - Datos profundos no-reactivos. Si tienes estructuras de datos grandes que no necesitan ser reactivas (como una referencia de tabla de 10K filas), usa
shallowRefomarkRawpara saltarte el envoltorio Proxy de Vue. - Tamaño de bundle del ecosistema completo. Vue Router + Pinia + una librería UI + tu código puede llegar rápidamente a 200KB+ gzipped. Usa el analizador de bundle de Vite y lazy-load componentes de ruta.
- Desajustes de hidratación en SSR. El servidor renderiza un DOM ligeramente diferente al que monta el cliente. Verifica que tus datos sean idénticos en ambos lados — culpables comunes son
Date, IDs aleatorios y feature flags.
Consideraciones de migración Vue 2 vs. Vue 3
Vue 2 alcanzó el final de su vida el 31 de diciembre de 2023. Si todavía estás en Vue 2, comienza la migración ahora. Cambios clave que rompen:
- La reactividad usa Proxy ahora en lugar de
Object.defineProperty— más confiable, pero significa que no puedes detectar reactivamente añadir nuevas propiedades. - Múltiples nodos raíz por componente (fragmentos) ahora están permitidos.
- API Teleport para renderizar en otra parte del DOM.
- Mejor soporte de TypeScript en todo.
- Los
filtersfueron eliminados; usa propiedades computed o métodos en su lugar. - Varias APIs de eventos renombradas (
$listenersfusionado en$attrs).
El build de migración de Vue te ayuda a actualizar incrementalmente en lugar de big-bang.
FAQ: Vue.js
¿Debería aprender Vue o React en 2026?
Si tienes una oportunidad de trabajo para uno específicamente, aprende ese. Sino: React tiene más trabajos pero es más difícil; Vue es más fácil y crece rápido fuera de EE.UU. (especialmente Asia y Europa). Conocer uno hace que aprender el otro sea mucho más rápido.
¿Vue todavía se mantiene activamente?
Sí, muy activamente. Vue 3.4 fue lanzado a finales de 2023, 3.5 en 2024 con grandes mejoras de reactividad, y el trabajo activo continúa. Evan You comenzó VoidZero en 2024 para comercializar y acelerar todo el ecosistema Vue/Vite.
¿Composition API u Options API?
Para nuevos proyectos en Vue 3, usa la Composition API con <script setup>. Es mejor para reutilización de código, soporte de TypeScript y componentes complejos. La Options API todavía se soporta y está bien para componentes más simples o equipos que ya la usan.
¿Puede Vue hacer renderizado del lado del servidor?
Sí — vía Nuxt (meta-framework completo) o las propias APIs SSR de Vue (más manuales). Nuxt es la opción correcta para la mayoría de las apps SSR de producción.
¿Es Vue bueno para apps móviles?
Sí vía NativeScript-Vue (compila a iOS/Android nativo), Quasar (framework híbrido basado en Vue) o Ionic Vue (web-tech-en-nativo). Para nativo puro, el ecosistema de React Native es más maduro.
¿Cómo maneja Vue TypeScript?
Excelente en Vue 3. Define props con defineProps<{...}>(), usa ref<Type>(), etc. La Composition API se diseñó pensando en TypeScript. La Options API también tiene soporte de TypeScript pero se siente menos natural.
Cómo se relaciona LoadFocus con las aplicaciones Vue
Las SPAs de Vue dependen de que los bundles JavaScript se entreguen rápidamente a los usuarios. El tamaño del bundle, la velocidad de renderizado y el rendimiento de transición de ruta afectan directamente la experiencia del usuario. Las pruebas de velocidad de sitio web LoadFocus validan los Core Web Vitals de tu app Vue desde 30+ ubicaciones. Las pruebas de carga validan que los endpoints API que tus componentes Vue llaman aguantan bajo tráfico concurrente realista — particularmente importante para SPAs donde una página puede emitir 10-30 llamadas API por cambio de ruta.
Herramientas LoadFocus relacionadas
Lleva este concepto a la práctica con LoadFocus — la misma plataforma que potencia todo lo que acabas de leer.