Crear una aplicación de Vue 3
Para crear un nuevo proyecto de Vue, se recomienda utilizar npm
, que no es más que el gestor de dependencias de Node.js, en este sentido npm nos automatizará la tarea de instalar librerías y paquetes en aplicaciones javascript, de modo que no tengamos que preocuparnos de hacerlo manualmente.
Creando un nuevo proyecto
Para comenzar, solo tenemos que abrir una nueva Terminal o Símbolo de sistema en alguna ubicación del sistema. Luego escribe el siguiente comando:
1
npm create vue@latest
Al ejecutar el comando, nos puede solicitar instalar el paquete create-vue, que es el asistente que se encargará de crear la estructura de carpetas del proyecto de vue y dejarlo listo para empezar:
$ npm create vue@latest
Need to install the following packages:
create-vue@3.15.1
Ok to proceed? (y) _
Una vez instalado, nos aparecerá el asistente para comenzar la configuración. Las opciones son las siguientes:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Vue.js - The Progressive JavaScript Framework
✔ Add TypeScript? … No / Yes
✔ Add JSX Support? … No / Yes
✔ Add Vue Router for Single Page Application development? … No / Yes
✔ Add Pinia for state management? … No / Yes
✔ Add Vitest for Unit Testing? … No / Yes
✔ Add an End-to-End Testing Solution? › Playwright
✔ Add ESLint for code quality? … No / Yes
✔ Add Prettier for code formatting? … No / Yes
Scaffolding project in /home/manz/vue3-project...
Done. Now run:
cd vue-folder
npm install
npm run format
npm run dev
Debemos marcar las opciones que nos intersa para que el asistente instale y preconfigure los paquetes necesarios para el proyecto.
Instalación de ESLint
ESlint es un linter de código javascript, que una vez instalado, el editor donde programamos y escribimos código estará preparado para revisar nuestro código en tiempo real y avisarnos de posibles errores, problemas con el código o fragmentos que escribamos mal. Vue 3 lo configura por defecto.
Comenzar el Proyecto
Una vez decidido que complementos vamos a utilizar y hemos respondido cada una de las preguntas Antes de profundizar en la configuración del proyecto, veamos un pequeño ejemplo de un componente en Vue:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script setup>
import { ref } from 'vue';
// Definimos una variable reactiva
const mensaje = ref('¡Hola, Vue!');
// Función para cambiar el mensaje
const cambiarMensaje = () => {
mensaje.value = '¡Vue es lo máximo!';
};
</script>
<template>
<h1>{{ message }}</h1>
<button @click="cambiarMensaje">Cambiar mensaje</button>
</template>
Para explicarte tan solo las partes que son propias de Vue en este código:
<script setup>
→ Es la nueva forma simplificada de definir lógica del componente en Vue 3.ref()
→ Se usa para crear una variable reactiva en Vue.{{ mensaje}}
→ Es la sintaxis de interporlación, que permite mostrar valores en el HTML.@click="cambiarMensaje"
→ Usa la directiva@click
para ejecutar una función cuando el usuario haga clic en el botón.
Si lo comparamos con React, Vue no necesita JSX ni configuraciones complejas, si lo comparamos con Angular, No requiere TypeScript obligatorio ni estructuras rígidas.
Directivas
Vue usa directivas para añadir funcionalidad especial a los elementos HTML. Algunas de las más conocidas son:
v-if
→ Renderiza un elemento solo si se cumple una condición.v-for
→ Se usa para renderizar listas de datos.v-bind
→ Une atributos HTML con datos de Vue.v-model
→ Vincula datos con elementos de formularios.
Ejemplo Básico de v-if
En este ejemplo, tenemos un botón que alterna la visibilidad de un mensaje.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<template>
<div>
<button @click="mostrarMensaje = !mostrarMensaje">
{{ mostrarMensaje ? 'Ocultar' : 'Mostrar' }} Mensaje
</button>
<p v-if="mostrarMensaje">!Este mensaje se muestra con v-if!</p>
</div>
</template>
<script setup>
import { ref } from 'vue';
const mostrarMensaje = ref(false);
</script>
Ejemplo Básico de v-for
Supongamos que tenemos una lista de nombres y queremos mostrarlos en una lista desordenada <ul>
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<template>
<div>
<h2>Lista de nombres:</h2>
<ul>
<li v-for="(nombre, index) in nombres" :key="index">
{{ index + 1 }} - {{ nombre }}
</li>
</ul>
</div>
</template>
<script setup>
import { ref } from 'vue';
// Lista de nombres
const nombres = ref(['Ana', 'Carlos', 'Elena', 'Pedro', 'Luis'])
</script>
Ejemplo Básico de v-bind
En este ejemplo, usaremos v-bind
para cambiar dinámicamente el src
de una imagen y el href
de un enlace:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<template>
<div>
<h2>Ejemplo de v-bind</h2>
<!-- Enlace dinámico -->
<a :href="url" target="_blank">Visitar página</a>
<!-- Imagen dinámica -->
<img :src="imagen" alt="Imagen dinámica" width="200" />
</div>
</template>
<script setup>
import { ref } from 'vue';
// Datos reactivos
const url = ref('https://vuejs.org');
const imagen = ref('https://vuejs.org/images/logo.png');
</script>
:href="url"
→ Enlaza el atributohref
con la variableurl
.:src="imagen"
→ Enlaza elsrc
de la imagen con la variableimagen
.
Ejemplo Básico de v-model
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<template>
<div>
<h2>Ejemplo de v-model</h2>
<!-- Campo de entrada -->
<input v-model="nombre" placeholder="Escribe tu nombre" />
<!-- Mostrar el valor del input en tiempo real -->
<p>Hola, {{ nombre }}!</p>
</div>
</template>
<script setup>
import { ref } from 'vue';
// Variable reactiva
const nombre = ref('');
</script>
v-model="nombre"
→ Enlaza el input con la variablenombre
. Cada vez que el usuario escriba en el input, el valor denombre
cambiará automáticamente y se reflejará en la interfaz sin necesidad de eventos adicionales.