Primeros Pasos con Nuxt.js
Si eres un desarrollador de Vue que busca construir aplicaciones listas para producción con un flujo de trabajo moderno, Nuxt 4 te ofrece el camino más rápido hacia adelante. Nuxt se construye sobre Vue 3 con renderizado del lado del servidor, renderizado híbrido, enrutamiento basado en archivos y un modelo de despliegue unificado que funciona en entornos Node, hosts estáticos, serverless y edge.
Este tutorial amigable para principiantes te guía a través de la creación de tu primera aplicación Nuxt 4 utilizando las configuraciones actuales predeterminadas como Vue 3, Vite, TypeScript, composables y Nitro.
Puntos Clave
- Nuxt 4 extiende Vue 3 con SSR, renderizado híbrido, enrutamiento automático y optimizaciones integradas
- El enrutamiento basado en archivos, composables y auto-importaciones reducen la configuración y el código repetitivo
- TypeScript está completamente integrado con generación automática de tipos
- Despliega en cualquier lugar usando la salida de compilación agnóstica de plataforma de Nitro
¿Qué es Nuxt 4 y Por Qué Deberías Usarlo?
Nuxt 4 es la versión principal actual del framework Nuxt y la opción recomendada para nuevas aplicaciones Vue a finales de 2025. Utiliza Vue 3, Vite y el motor de servidor Nitro para ofrecer una experiencia de desarrollo rápida y una arquitectura de producción flexible.
A diferencia de las aplicaciones Vue simples, Nuxt 4 proporciona SSR de forma predeterminada, gestiona el enrutamiento automáticamente, maneja la obtención de datos tanto en contextos de servidor como de cliente, y viene con una estructura de proyecto predecible y basada en convenciones.
Vue 3 + Vite por Defecto
Nuxt 4 utiliza Vite para su servidor de desarrollo y pipeline de compilación. Esto te proporciona reemplazo de módulos en caliente casi instantáneo, arranques en frío rápidos y paquetes de salida altamente optimizados.
La API de Composición de Vue 3 y el diseño que prioriza TypeScript proporcionan una fuerte inferencia de tipos, mejor organización del código y comportamiento predecible de los componentes.
TypeScript, Sin Configuración Requerida
El soporte para TypeScript está integrado. Nuxt genera automáticamente tipos basados en los directorios de tu proyecto, rutas de API, middleware y componentes. Tu IDE comprende todo tu proyecto desde el momento en que guardas los cambios.
Configurando tu Primer Proyecto Nuxt 4
Instalación con npm create nuxt@latest
Crea un nuevo proyecto usando el moderno CLI de Nuxt 4:
npm create nuxt@latest my-app
cd my-app
npm install
npm run dev
Esto configura un proyecto Nuxt 4 con TypeScript, Vite, Nitro y composables auto-importados listos para usar.
Descripción General de la Estructura de Directorios
Un proyecto Nuxt 4 recién creado incluye:
pages/— Enrutamiento basado en archivoscomponents/— Componentes auto-importadoscomposables/— Lógica reutilizable con importaciones automáticasserver/api/— Endpoints de servidor impulsados por Nitropublic/— Recursos estáticosnuxt.config.ts— Configuración que prioriza TypeScript
Esta estructura elimina la sobrecarga de configuración y mantiene todo predecible.
Conceptos Fundamentales: Páginas, Layouts, Composables, Auto-Importaciones
Enrutamiento Basado en Archivos en Nuxt 4
Agrega un archivo Vue dentro de pages/ y Nuxt crea automáticamente una ruta:
<!-- pages/products/[id].vue -->
<script setup lang="ts">
const route = useRoute()
const id = route.params.id
</script>
<template>
<h1>Producto {{ id }}</h1>
</template>
Los parámetros de ruta dinámicos utilizan corchetes.
Layouts para UI Compartida
Los layouts permiten contenedores compartidos alrededor de las páginas:
<!-- layouts/default.vue -->
<template>
<AppHeader />
<main><slot /></main>
<AppFooter />
</template>
Las páginas usan el layout predeterminado automáticamente. Puedes cambiar layouts usando definePageMeta.
Composables y Auto-Importaciones
Los composables dentro de composables/ se auto-importan en todas partes:
// composables/useCounter.ts
export const useCounter = () => {
const count = useState('count', () => 0)
const inc = () => count.value++
return { count, inc }
}
Sin declaraciones de importación, sin código repetitivo — Nuxt maneja todo.
Discover how at OpenReplay.com.
Obtención de Datos en Nuxt 4
useFetch para Peticiones Conscientes de SSR
useFetch maneja la carga de datos del lado del servidor y la hidratación del cliente:
<script setup lang="ts">
const { data: posts } = await useFetch('/api/posts')
</script>
Esto evita la doble obtención entre servidor y cliente y funciona perfectamente con Nitro.
Rutas de API mediante Nitro
Crea endpoints de servidor en server/api/:
// server/api/posts.get.ts
export default defineEventHandler(async () => {
const posts = await $fetch('https://jsonplaceholder.typicode.com/posts')
return posts.slice(0, 5)
})
Nitro optimiza estos endpoints para despliegues Node, estáticos, serverless o edge automáticamente.
useAsyncData para Lógica Personalizada
Si necesitas más control:
<script setup lang="ts">
const { data } = await useAsyncData('posts', () =>
$fetch('/api/posts', { query: { limit: 5 } })
)
</script>
Gestión de Estado con Pinia
Para el estado a nivel de aplicación, Nuxt 4 utiliza Pinia:
npm install @pinia/nuxt
Actívalo:
export default defineNuxtConfig({
modules: ['@pinia/nuxt']
})
Crea un store:
// stores/user.ts
export const useUserStore = defineStore('user', () => {
const profile = ref(null)
async function load() {
profile.value = await $fetch('/api/user')
}
return { profile, load }
})
Pinia se integra directamente con las auto-importaciones de Nuxt y el comportamiento SSR.
Modos de Renderizado en Nuxt 4
Renderizado del Lado del Servidor por Defecto
Nuxt 4 renderiza páginas en el servidor para SEO y rendimiento. Puedes ajustar el renderizado por ruta:
export default defineNuxtConfig({
routeRules: {
'/': { prerender: true },
'/admin/**': { ssr: false },
'/blog/**': { isr: 3600 }
}
})
Esto habilita aplicaciones híbridas que mezclan SSR, páginas estáticas prerenderizadas y secciones dinámicas solo del cliente.
Generación Estática y Despliegue Híbrido
Genera salida estática si es necesario:
npm run generate
Puedes prerenderizar páginas de marketing, mantener dashboards dinámicos y ejecutar todo a través de Nitro.
Desplegando tu Aplicación Nuxt 4
Compilar para Producción
npm run build
Nuxt genera un directorio .output/ que contiene código de servidor, recursos del cliente y presets para cada plataforma de hosting principal.
Despliegue Agnóstico de Plataforma
Despliega en:
- Servidores Node
- Hosts estáticos
- Plataformas serverless (AWS, Vercel, Netlify)
- Redes edge (Cloudflare Workers, Vercel Edge)
Nitro selecciona el preset correcto automáticamente.
Conclusión
Comenzar con Nuxt.js hoy significa usar Nuxt 4.
Con SSR por defecto, renderizado híbrido, auto-importaciones, composables y Nitro impulsando el despliegue, Nuxt 4 te proporciona todo lo que necesitas para construir aplicaciones Vue rápidas, modernas y mantenibles.
Comienza con:
npm create nuxt@latest
—y ya estarás sobre la base correcta.
Preguntas Frecuentes
useFetch es un wrapper de conveniencia para peticiones centradas en HTTP con hidratación SSR. useAsyncData es una primitiva de nivel más bajo para lógica personalizada de carga de datos. Ambos funcionan perfectamente con Nitro.
Sí. Establece ssr: false en nuxt.config.ts para comportamiento SPA, o configura SSR por ruta usando routeRules.
Nuxt 4 proporciona generación de tipos integrada para rutas, manejadores de API, componentes, composables y utilidades de servidor sin necesidad de configuración manual.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.