Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ya está disponible el framework MVC para WordPress! Puedes echarle un ojo aquí!
neoguias.com
Introducción a Vue
Vue
En este tutorial aprenderás a crear una aplicación desde cero usando Vue.
Veremos primero los conceptos fundamentales de Vue, así como la anatomía
de las aplicaciones creadas con este framework.
Seguidamente aprenderás a crear una aplicación CRUD paso a paso con Vue.
Cuando finalice este tutorial, habrás aprendido a crear componentes, eventos,
métodos, propiedades computadas y formularios, además de saber gestionar
el estado de los componentes.
https://www.neoguias.com/tutorial-vue/ 1/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
# Contenidos
1 Qué es Vue
2 Introducción
3 Instalación de Vue
3.1 Mediante un archivo HTML estático
6 Creación de componentes
https://www.neoguias.com/tutorial-vue/ 2/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 3/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
#2 Introducción
Existen una serie de requisitos que deberías tener en cuenta antes de continuar
con este tutorial. Para empezar, deberías saber programar con JavaScript.
Además, también deberías saber crear páginas con HTML y CSS. Si no
dispones de estos conocimientos, consulta primero los tutoriales que ves a
continuación, ya que te servirán de gran ayuda durante el proceso de
aprendizaje de Vue:
https://www.neoguias.com/tutorial-vue/ 4/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 5/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Primero veremos cómo agregar el script de Vue en un archivo HTML, algo que
resultará muy familiar a los desarrolladores que estén acostumbrados a usar
jQuery, Si ya sabes usar React, Svelte o cualquier otro framework JavaScript,
puedes saltarte este primer método e instalar Vue desde la terminal de
comandos.
Esta es la opción más sencilla, ya que bastará con incluir el script de Vue desde
una CDN en la sección head un archivo HTML. Nuestra aplicación Vue estará
incluida en un div al que identificaremos mediante el atributo id , cuyo valor
será app . En el siguiente archivo HTML vemos cómo agregarlo:
https://www.neoguias.com/tutorial-vue/ 6/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" /
<meta name="viewport" content="width=device-width,init
<meta name="description" content="Tu primera aplicació
<script src="https://unpkg.com/vue@3.0.3/dist/vue.glob
<body>
<div id="app"></div>
</body>
</html>
Tal y como ves, hemos incluido la versión 3.0.3 de Vue. Para incluir otras
versiones, basta con que cambies la porción @3.0.3 de la URL y especifiques
el número de versión que quieres agregar en su lugar. En caso de querer incluir
una versión de desarrollo de Vue y no de producción, tendríamos que incluir
este script en su lugar:
<script src="https://unpkg.com/vue@3.0.3/dist/vue.global.j
https://www.neoguias.com/tutorial-vue/ 7/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Para ello agregaremos un script justo antes del cierre de la etiqueta body . En
el script crearemos una nueva instancia de una aplicación Vue ejecutando la
sentencia app = Vue.createApp({ ... }) , que recibirá un objeto como
parámetro:
Para inicializar la aplicación Vue que hemos creado, debemos usar el método
mount , que recibirá el selector CSS del elemento en el que queremos
renderizar la aplicación, que en nuestro caso es el div #app :
app.mount('#app');
https://www.neoguias.com/tutorial-vue/ 8/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 9/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<html lang="es">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" /
<meta name="viewport" content="width=device-width,init
<meta name="description" content="Tu primera aplicació
<script src="https://unpkg.com/vue@3.0.3/dist/vue.glob
<body>
<div id="app">{{ saludo }}</div>
<script>
const app = Vue.createApp({
data() {
return {
saludo: 'Hail to the King, Baby!'
}
},
});
app.mount('#app');
</script>
</body>
</html>
https://www.neoguias.com/tutorial-vue/ 10/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Tal y como ves, hemos usado únicamente JavaScript junto con algunos
cambios de sintaxis que provocarían errores. Sin embargo, cuando ejecutas el
código, puedes comprobar que el resultado es el siguiente:
https://www.neoguias.com/tutorial-vue/ 11/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Para instalar Vue CLI mediante npm debes ejecutar el siguiente comando:
Para instalar Vue CLI mediante yarn debes ejecutar el siguiente comando:
Para crear una nueva aplicación, desplázate al directorio en el que quieres crear
tu aplicación y ejecuta el siguiente comando para crear una aplicación cuyo
nombre será tutorial-vue
Para mejorar :
tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 12/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Se te preguntará si quieres crear la aplicación con Vue 2 con las opciones por
defecto, con Vue 3 con las opciones por defecto o si por el contrario prefieres
seleccionar manualmente las opciones. Selecciona la opción Vue 3 , que
instalará Vue 3 junto con Babel y ESLint.
cd tutorial-vue
https://www.neoguias.com/tutorial-vue/ 13/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
yarn serve
https://www.neoguias.com/tutorial-vue/ 14/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
createApp(App).mount('#app')
https://www.neoguias.com/tutorial-vue/ 15/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Puedes usar cualquier IDE, aunque tendrás que usar algún plugin de resaltado
de sintaxis que además también pueda formatear el código. Aquí tienes el
más utilizado para cada IDE:
https://www.neoguias.com/tutorial-vue/ 16/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 17/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template></template>
<script>
export default {
name: 'nombre-componente,
}
</script>
<style scoped></style>
https://www.neoguias.com/tutorial-vue/ 18/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 19/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="tabla-personas">
<table class="table">
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr>
<td>Jon</td>
<td>Nieve</td>
<td>jon@email.com</td>
</tr>
<tr>
<td>Tyrion</td>
<td>Lannister</td>
<td>tyrion@email.com</td>
</tr>
<tr>
<td>A</td>
<td>Daenerys</td>
<td>Targaryen</td>
<td>daenerys@email.com</td>
</tr>
</tbody>
</table>
</div>
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
</template>
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 20/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<script>
export default {
name: 'tabla-personas',
}
</script>
<style scoped></style>
Tal y como ves, podemos usar el carácter @ para referenciar al directorio src .
https://www.neoguias.com/tutorial-vue/ 21/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 22/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="app" class="container">
<div class="row">
<div class="col-md-12">
<h1>Personas</h1>
</div>
</div>
<div class="row">
<div class="col-md-12">
<tabla-personas />
</div>
</div>
</div>
</template>
<script>
import TablaPersonas from '@/components/TablaPersonas.vu
export default {
name: 'app',
components: {
TablaPersonas,
},
}
</script>
<style>
button {
background: #009435;
border: 1px solid #009435;
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 23/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
}
</style>
Vamos a reemplazar los datos de las personas por un array de objetos que
contengan los datos de las personas. Por ello, vamos a agregar el método
data a nuestra aplicación en el archivo App.vue , que sencillamente Aceptar
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o
devolverá los datossignifica
continúas navegando de los que
usuarios.
aceptas Además, cada
su uso. Obtén másuna tendrásobre
información un identificador:
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 24/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
// ...
import TablaPersonas from '@/components/TablaPersonas.vue'
export default {
name: 'app',
components: {
TablaPersonas,
},
data() {
return {
personas: [
{
id: 1,
nombre: 'Jon',
apellido: 'Nieve',
email: 'jon@email.com',
},
{
id: 2,
nombre: 'Tyrion',
apellido: 'Lannister',
email: 'tyrion@email.com',
},
{
id: 3,
nombre: 'Daenerys',
apellido: 'Targaryen',
email: 'daenerys@email.com',
},
],
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
} navegando significa que aceptas su uso. Obtén más información sobre
continúas
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
},
https://www.neoguias.com/tutorial-vue/ 25/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
}
// ...
https://www.neoguias.com/tutorial-vue/ 26/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
// ...
export default {
name: 'tabla-personas',
props: {
personas: Array,
},
}
...
...
export default {
name: 'tabla-personas',
props: ['empleados'],
}
// ...
https://www.neoguias.com/tutorial-vue/ 27/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="tabla-personas">
<table class="table">
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<tr v-for="persona in personas" :key="persona.id">
<td>{{ persona.nombre}}</td>
<td>{{ persona.apellido }}</td>
<td>{{ persona.email}}</td>
</tr>
</tbody>
</table>
</div>
</template>
https://www.neoguias.com/tutorial-vue/ 28/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 29/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 30/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="formulario-persona">
<form>
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label>Nombre</label>
<input type="text" class="form-control" />
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Apellido</label>
<input type="text" class="form-control" />
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Email</label>
<input type="email" class="form-control" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<button class="btn btn-primary">Añadir perso
</div>
</div>
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
</div>
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
</div>
https://www.neoguias.com/tutorial-vue/ 31/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
</form>
</div>
</template>
<script>
export default {
name: 'formulario-persona',
data() {
return {
persona: {
nombre: '',
persona: '',
apellido: '',
},
}
},
}
</script>
<style scoped>
form {
margin-bottom: 2rem;
}
</style>
https://www.neoguias.com/tutorial-vue/ 32/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 33/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="app" class="container">
<div class="row">
<div class="col-md-12">
<h1>Personas</h1>
</div>
</div>
<div class="row">
<div class="col-md-12">
<formulario-persona />
<tabla-personas :personas="personas" />
</div>
</div>
</div>
</template>
<script>
import TablaPersonas from '@/components/TablaPersonas.vu
import FormularioPersona from '@/components/FormularioPe
export default {
name: 'app',
components: {
TablaPersonas,
FormularioPersona,
},
data: {
// ...
},
}
</script>
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 34/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Para ello usamos el atributo v-model , que enlazará el valor de los campos
con sus respectivas variables de estado, que son las definidas en la propiedad
persona de la sentencia return del componente:
https://www.neoguias.com/tutorial-vue/ 35/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="formulario-persona">
<form>
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label>Nombre</label>
<input v-model="persona.nombre" type="text"
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Apellido</label>
<input v-model="persona.apellido" type="text
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Email</label>
<input v-model="persona.email" type="email"
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<button class="btn btn-primary">Añadir perso
</div>
</div>
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
</div>
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
</div>
https://www.neoguias.com/tutorial-vue/ 36/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
</form>
</div>
</template>
Sin embargo, todavía tenemos que enviar los datos a nuestro componente
principal, que es la aplicación App en sí misma, de modo que también se
modifique su estado, agregando los datos de una nueva persona a la lista de
personas.
https://www.neoguias.com/tutorial-vue/ 37/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<form @submit.prevent="enviarFormulario">
...
</form>
https://www.neoguias.com/tutorial-vue/ 38/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
export default {
name: 'formulario-persona',
data() {
return {
persona: {
nombre: '',
persona: '',
apellido: '',
},
}
},
methods: {
enviarFormulario() {
console.log('Funciona!');
},
},
}
https://www.neoguias.com/tutorial-vue/ 39/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
// ...
enviarFormulario() {
this.$emit('add-persona', this.persona);
}
// ...
https://www.neoguias.com/tutorial-vue/ 40/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
methods: {
agregarPersona(persona) {
this.personas = [...this.personas, persona];
}
}
https://www.neoguias.com/tutorial-vue/ 41/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
methods: {
agregarPersona(persona) {
let id = 0;
if (this.personas.length > 0) {
id = this.personas[this.personas.length - 1].id + 1;
}
Los que hemos hecho es aumentar el valor del ID del último elemento
agregado en una unidad, o dejarlo en 0 si no hay elementos. Luego
insertamos la persona en el array, a la que agregamos el id generado.
https://www.neoguias.com/tutorial-vue/ 42/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
// ...
computed: {
nombreInvalido() {
return this.persona.nombre.length < 1;
},
apellidoInvalido() {
return this.persona.apellido.length < 1;
},
emailInvalido() {
return this.persona.email.length < 1;
},
},
// ...
Hemos agregado una validación muy sencilla que simplemente comprueba que
se haya introducido algo en los campos.
https://www.neoguias.com/tutorial-vue/ 43/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
// ...
data() {
return {
procesando: false,
correcto: false,
error: false,
persona: {
nombre: '',
apellido: '',
email: '',
}
}
}
// ...
https://www.neoguias.com/tutorial-vue/ 44/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
// ...
methods: {
enviarFormulario() {
this.procesando = true;
this.resetEstado();
this.$emit('add-persona', this.persona);
this.error = false;
this.correcto = true;
this.procesando = false;
https://www.neoguias.com/tutorial-vue/ 45/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 46/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<form @submit.prevent="enviarFormulario">
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label>Nombre</label>
<input
v-model="persona.nombre"
type="text"
class="form-control"
:class="{ 'is-invalid': procesando && nombreIn
@focus="resetEstado"
/>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Apellido</label>
<input
v-model="persona.apellido"
type="text"
class="form-control"
:class="{ 'is-invalid': procesando && apellido
@focus="resetEstado"
/>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Email</label>
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
<input
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
v-model="persona.email"
https://www.neoguias.com/tutorial-vue/ 47/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
type="email"
class="form-control"
:class="{ 'is-invalid': procesando && emailInv
@focus="resetEstado" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<button class="btn btn-primary">Añadir persona</b
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12">
<div v-if="error && procesando" class="alert alert
Debes rellenar todos los campos!
</div>
<div v-if="correcto" class="alert alert-success" r
La persona ha sido agregada correctamente!
</div>
</div>
</div>
</div>
</form>
https://www.neoguias.com/tutorial-vue/ 48/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Tal y como has visto, hemos usado el tributo :class para definir las clases, ya
que no podemos usar atributos que existan actualmente en HTML. El motivo
de no usar el atributo class es que acepta únicamente una cadena de texto
como valor.
También hemos agregado el evento @focus a los campos input para que
se reseteen los estados cada vez que se seleccionen.
Tras agregar los mensajes de error, echa de nuevo un ojo al navegador para ver
el resultado. Verás que cuando de olvidas de rellnear algún campo se muestra
un mensaje de error:
https://www.neoguias.com/tutorial-vue/ 49/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 50/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<input
ref="nombre"
v-model="persona.nombre"
type="text"
class="form-control"
:class="{ 'is-invalid': procesando && nombreInvalido }"
@focus="resetEstado"
@keypress="resetEstado"
/>
this.$emit('add-persona', this.persona);
this.$refs.nombre.focus();
https://www.neoguias.com/tutorial-vue/ 51/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Para ello, vamos a agregar una columna más a la tabla del componente
TablaPersonas , que contendrá un botón que permita borrar cada fila:
https://www.neoguias.com/tutorial-vue/ 52/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="tabla-personas">
<table class="table">
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Email</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
<tr v-for="persona in personas" :key="persona.id">
<td>{{ persona.nombre}}</td>
<td>{{ persona.apellido }}</td>
<td>{{ persona.email}}</td>
<td>
<button class="btn btn-danger"> Eliminar</ 🗑️
</td>
</tr>
</tbody>
</table>
</div>
</template>
https://www.neoguias.com/tutorial-vue/ 53/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
eliminarPersona(id) {
this.personas = this.personas.filter(
persona => persona.id !== id
);
}
https://www.neoguias.com/tutorial-vue/ 54/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Para que la aplicación sea más usable, vamos a agregar un mensaje que se
mostrará justo antes de la etiqueta table de apertura cuando ésta no
contenga personas:
https://www.neoguias.com/tutorial-vue/ 55/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 56/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
methods: {
editarPersona(persona) {
this.personaEditada = Object.assign({}, persona);
this.editando = persona.id;
},
}
Lo que hemos hecho ha sido almacenar los datos originales de la persona que
ese está editando actualmente en el objeto personaEditada , de forma que
podemos recuperar los datos si se cancela la edición.
data() {
return {
editando: null,
}
},
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 57/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 58/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<template>
<div id="tabla-personas">
<div v-if="!personas.length" class="alert alert-info"
No se han agregado personas
</div>
<table class="table">
<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Email</th>
<th>Acciones</th>
</tr>
</thead>
<tbody>
<tr v-for="persona in personas" :key="persona.id">
<td v-if="editando === persona.id">
<input type="text" class="form-control" v-mo
</td>
<td v-else>
{{ persona.nombre}}
</td>
<td v-if="editando === persona.id">
<input type="text" class="form-control" v-mo
</td>
<td v-else>
{{ persona.apellido}}
</td>
<td v-if="editando === persona.id">
<input type="email" class="form-control"
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o
v-m
Aceptar
</td>
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
<td v-else>
https://www.neoguias.com/tutorial-vue/ 59/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
{{ persona.email}}
</td>
<td>
<button class="btn btn-info" @click="edita
<button class="btn btn-danger ml-2" @click
</td>
</tr>
</tbody>
</table>
</div>
</template>
Ahora, si pruebas la aplicación y editas una fila, podrás ver que se muestran
campos de edición en las filas de la persona que estás editando:
https://www.neoguias.com/tutorial-vue/ 60/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 61/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
guardarPersona(persona) {
if (!persona.nombre.length || !persona.apellido.length |
return;
}
this.$emit('actualizar-persona', persona.id, persona);
this.editando = null;
}
cancelarEdicion(persona) {
Object.assign(persona, this.personaEditada);
this.editando = null;
}
https://www.neoguias.com/tutorial-vue/ 62/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
<tabla-personas
:personas="personas"
@delete-persona="eliminarPersona"
@actualizar-persona="actualizarPersona"
/>
actualizarPersona(id, personaActualizada) {
this.personas = this.personas.map(persona =>
persona.id === id ? personaActualizada : persona
)
}
https://www.neoguias.com/tutorial-vue/ 63/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Podría dar por hecho que has creado un repositorio para este proyecto y que
todo tu código ya está en la rama main de GitHub.
En caso de que nunca hayas usado Git, primero instala Git en tu sistema y
luego inicializa un repositorio en el directorio raíz del proyecto ejecutando git
init . Luego accede a tu cuenta de GitHub y crea un nuevo repositorio, que
tendrá la estructura https://github.com/usuario/repositorio ,
siendo usuario tu nombre de usuario de GitHub y repositorio el
nombre del repositorio.
git add .
git remote add origin https://github.com/usuario/tutorial-
git commit -m "Primer commit"
git push -u origin main
ConPara
estomejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o
ya debería estar nuestro código en GitHub. Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 64/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
# NPM
npm run build
#Yarn
yarn build
https://www.neoguias.com/tutorial-vue/ 65/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
module.exports = {
publicPath: '/tutorial-vue',
}
# NPM
npm run build
#Yarn
yarn build
https://www.neoguias.com/tutorial-vue/ 66/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 67/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Lo que haremos en el siguiente tutorial, será crear una aplicación que soporte
la vista (GET), creación (POST), actualización (PUT) y eliminación (DELETE) de
los datos de diversas entidades. Es decir, que crearemos una aplicación que
siga la estructura REST. Haremos esto valiéndonos de una API, por lo que
agregaremos las acciones necesarias para conectar nuestra aplicación con la
API.
Me ha llevado bastantes horas crear este tutorial, así que, si crees que te ha
sido útil, agradecería que lo compartieras con más personas a las que podría
interesarles.
https://www.neoguias.com/tutorial-vue/ 68/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Twitter!
LinkedIn!
GitHub!
https://www.neoguias.com/tutorial-vue/ 69/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Responder
Alejandro dice:
2 enero, 2021 a las 10:11 am
Muchas gracias por publicar esta guía, muy bien hecha, perfecta para
introducirse en Vue 3.
Responder
Ana dice:
18 enero, 2021 a las 8:31 pm
Excelente Tutorial!!!! Muchas gracias por tu tiempo para hacerlo, realmente
muy útil!
Responder
Ed dice:
26 enero, 2021 a las 2:40 pm
Esta es mi primer guia de Vue y me ha servido bastante para entender
como funciona este Framework. Excelente trabajo, muchas gracias.
Responder
https://www.neoguias.com/tutorial-vue/ 70/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
saludos! :)
Responder
Responder
https://www.neoguias.com/tutorial-vue/ 71/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
@click=»editarPersona(persona.id)»
editarPersona(persona) {
this.personaEditada = Object.assign({}, persona);
this.editando = persona.id;
},
Jesus dice:
20 febrero, 2021 a las 7:12 pm
Genial !!!
Responder
https://www.neoguias.com/tutorial-vue/ 72/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
@actualizar-persona=»actualiarPersona»
Responder
Rob dice:
7 mayo, 2021 a las 5:14 pm
Enhorabuena, no podria estar mejor explicado. Nos ahorras mucho tiempo
en documentación aburida ;)
Responder
https://www.neoguias.com/tutorial-vue/ 73/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Diana dice:
23 febrero, 2022 a las 9:59 pm
Excelente tutorial práctico y rápido! Mil gracias :)
Responder
Miguel dice:
3 abril, 2022 a las 1:38 am
Gracias Edu. Lo haces muy facil, tienes el don de trasmitir y compartir
conocimiento, Fracias,
Responder
Luis dice:
12 abril, 2022 a las 12:14 am
Muy buen tutorial, excelente y en español, ahora voy a tratar de juntar con
Flask. Gracias por entregar tus conocimientos. Saludos.
Responder
Mario dice:
13 abril, 2022 a las 7:02 pm
Excelente tutorial!! felicitaciones y mi agredecimiento muy especial por
compartirlo, estaré atento a tus proximos tutoriales.
Responder
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 74/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Responder
Responder
Responder
Responder
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
cómo las usamos y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 75/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Dave H dice:
10 septiembre, 2022 a las 10:23 am
Muchas gracias!
Super explicación
Responder
Responder
Commentario *
Nombre *
https://www.neoguias.com/tutorial-vue/ 76/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Publicar el comentario
Bañador una
pieza simple
con cordón…
$294
Comprar ahora
https://www.neoguias.com/tutorial-vue/ 77/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 78/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Información
Para mejorar tu experiencia en nuestra web utilizamos cookies. Si aceptas o Aceptar
continúas navegando significa que aceptas su uso. Obtén más información sobre
Política deusamos
cómo las privacidad
y cómo puedes controlarlas en nuestra política de cookies. Más información
https://www.neoguias.com/tutorial-vue/ 79/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
Términos de uso
Contenidos
Guías de aprendizaje
Proyectos de aprendizaje
Tutoriales de introducción
Tutoriales
Tutoriales de Sistemas
Tutoriales de Aplicaciones
Tutoriales de Programación
Comunidad
Actualízate con el contenido de Neoguias
K E N O D O ® LT D K E N O D O . C O M
https://www.neoguias.com/tutorial-vue/ 80/81
21/2/23, 11:51 Tutorial de introducción a Vue 3 | Neoguias
https://www.neoguias.com/tutorial-vue/ 81/81