Vue.js
Descripción general
Vue.js es un framework progresivo de JavaScript para crear interfaces de usuario. Está diseñado para adoptarse de forma incremental y se centra en la capa de vista, lo que facilita su integración con otras librerías o proyectos existentes.
Inicio rápido
Crear repositorio desde plantilla
En tu panel, ve a la pestaña Tools & Deployment. Haz clic en el botón "New Repository", selecciona la plantilla de Vue.js del menú desplegable, introduce un nombre de repositorio y un subdominio, y luego haz clic en "Create Repository".
Clona tu repositorio
git clone https://<git-server>/<username>/<repo-name>.git
cd <repo-name>
Instala las dependencias
npm install
Inicia el servidor de desarrollo
npm run dev
Abre http://localhost:4200 en tu navegador.
Compila y haz push
npm run build
git add .
git commit -m "Initial setup"
git push origin main
Desarrollo local con Docker
Si no tienes Node.js instalado localmente, puedes usar Docker para ejecutar comandos de Vue. El proyecto incluye un Dockerfile para builds de producción con nginx.
Requisitos previos
Instala Docker Desktop para tu sistema operativo (Windows, Mac o Linux).
Ejecutar comandos con Docker
# Run npm install
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm install
# Run development server (accessible at localhost:4200)
docker run --rm -v $(pwd):/app -w /app -p 4200:4200 node:lts-alpine npm run dev
# Build for production
docker run --rm -v $(pwd):/app -w /app node:lts-alpine npm run build
Estructura del proyecto
Entender dónde se ubican los archivos:
├── src/
│ ├── assets/ # Recursos estáticos (imágenes, fuentes)
│ ├── components/ # Componentes Vue
│ ├── views/ # Componentes de página
│ ├── router/ # Configuración de Vue Router
│ ├── stores/ # Stores de Pinia
│ ├── App.vue # Componente raíz
│ └── main.js # Punto de entrada de la aplicación
├── public/ # Archivos estáticos públicos
├── index.html # Punto de entrada HTML
├── vite.config.js # Configuración de Vite
├── package.json # Dependencias y scripts
└── Dockerfile # Configuración de build Docker
Tareas comunes
Crear un componente
Crea archivos .vue en src/components/:
<!-- src/components/Button.vue -->
<script setup>
defineProps({
label: String
});
const emit = defineEmits(['click']);
</script>
<template>
<button
class="bg-blue-500 text-white px-4 py-2 rounded"
@click="emit('click')"
>
{{ label }}
</button>
</template>
Añadir una ruta
Edita src/router/index.js:
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';
const router = createRouter({
history: createWebHistory(),
routes: [
{ path: '/', component: Home },
{ path: '/about', component: About }
]
});
export default router;
Usar un store de Pinia
Crea un store en src/stores/:
// src/stores/counter.js
import { defineStore } from 'pinia';
export const useCounterStore = defineStore('counter', {
state: () => ({ count: 0 }),
actions: {
increment() { this.count++ },
decrement() { this.count-- }
}
});
Usar Tailwind CSS
Tailwind CSS 4 viene preconfigurado. Usa las clases directamente en tus plantillas:
<div class="bg-blue-500 text-white p-4 rounded-lg">
Hello Tailwind!
</div>
Comandos útiles
npm run dev
Iniciar el servidor de desarrollo (puerto 4200)
npm run build
Compilar para producción
npm run preview
Previsualizar el build de producción localmente
npm run test:unit
Ejecutar tests unitarios con Vitest
npm run lint
Comprobar y corregir el estilo del código
npm run format
Formatear código con Prettier
Resolución de problemas
npm install falla con errores de permisos
Causa: Problemas de permisos con la caché de npm o node_modules.
Solución: Elimina la carpeta node_modules y el archivo package-lock.json, y luego ejecuta npm install de nuevo.
El puerto 4200 ya está en uso
Causa: Otro proceso está usando el puerto 4200.
Solución: Usa otro puerto: npm run dev -- --port 3000 o detén el otro proceso.
El componente no se actualiza
Causa: Reactividad mal configurada.
Solución: Usa ref() para primitivas y reactive() para objetos. Accede a los valores ref con .value en el script, pero no en la plantilla.
El router no funciona
Causa: RouterView no está en App.vue o el router no está registrado.
Solución: Asegúrate de que <RouterView /> está en App.vue y que el router se añade con app.use(router) en main.js.
El build falla tras el despliegue
Causa: Errores de compilación o dependencias faltantes.
Solución: Ejecuta npm run build localmente primero para comprobar errores antes de hacer push.
Flujo de despliegue
Cada vez que haces push de tu código a Git, tu aplicación se compila y despliega automáticamente:
La URL de tu aplicación desplegada sigue este formato:
https://<your-subdomain>-<repo-name>.<session-domain>
Ejemplo: https://student01-module-a.demo.nstrim.app