Vue.js es un framework progresivo de JavaScript utilizado para construir interfaces de usuario. A diferencia de otros frameworks monolíticos, Vue está diseñado desde el principio para ser adoptable de manera incremental. La biblioteca central se enfoca solo en la capa de vista, y es fácil de integrar con otras bibliotecas o proyectos existentes. Además, Vue es perfectamente capaz de impulsar aplicaciones sofisticadas de una sola página cuando se utiliza en combinación con herramientas modernas y bibliotecas de soporte.
- Introducción a Vue.js
¿Qué es Vue.js?
Vue.js es un framework de JavaScript que se utiliza para construir interfaces de usuario. Es conocido por su facilidad de uso, flexibilidad y rendimiento.
Características Clave de Vue.js
- Reactividad: Vue.js utiliza un sistema de reactividad que actualiza automáticamente la vista cuando los datos cambian.
- Componentes: Vue.js permite dividir la interfaz de usuario en componentes reutilizables.
- Directivas: Vue.js proporciona directivas como
v-bind,v-model,v-if,v-for, etc., para enlazar datos y manipular el DOM. - Transiciones y Animaciones: Vue.js incluye soporte integrado para transiciones y animaciones.
- Configuración del Entorno
Instalación de Vue.js
Puedes instalar Vue.js de varias maneras, pero una de las más comunes es a través de un CDN para proyectos pequeños o mediante Vue CLI para proyectos más grandes.
Usando CDN
<!DOCTYPE html>
<html>
<head>
<title>Vue.js Example</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
<div id="app">
{{ message }}
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
});
</script>
</body>
</html>Usando Vue CLI
-
Instalar Vue CLI:
npm install -g @vue/cli -
Crear un Nuevo Proyecto:
vue create my-project -
Navegar al Directorio del Proyecto y Ejecutarlo:
cd my-project npm run serve
- Creación de un Proyecto Básico
Estructura de un Proyecto Vue.js
Un proyecto típico de Vue.js creado con Vue CLI tendrá la siguiente estructura de directorios:
my-project/ ├── node_modules/ ├── public/ │ ├── index.html ├── src/ │ ├── assets/ │ ├── components/ │ ├── App.vue │ ├── main.js ├── .gitignore ├── babel.config.js ├── package.json ├── README.md
Archivo main.js
El archivo main.js es el punto de entrada de la aplicación Vue.js.
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false
new Vue({
render: h => h(App),
}).$mount('#app')Componente App.vue
El archivo App.vue es el componente raíz de la aplicación.
<template>
<div id="app">
<h1>{{ message }}</h1>
</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello Vue!'
}
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
- Componentes en Vue.js
Creación de Componentes
Los componentes son una de las características más poderosas de Vue.js. Permiten dividir la interfaz de usuario en piezas reutilizables y manejables.
Ejemplo de Componente
<!-- src/components/HelloWorld.vue -->
<template>
<div class="hello">
<h1>{{ msg }}</h1>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
props: {
msg: String
}
}
</script>
<style scoped>
h1 {
color: #42b983;
}
</style>Uso de Componentes
Para usar un componente en otro componente, primero debes importarlo y luego registrarlo.
<!-- src/App.vue -->
<template>
<div id="app">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
export default {
name: 'App',
components: {
HelloWorld
}
}
</script>
- Directivas en Vue.js
Directivas Comunes
- v-bind: Enlaza atributos de HTML a datos de Vue.
- v-model: Crea un enlace bidireccional entre un elemento de formulario y los datos.
- v-if: Renderiza elementos basados en una condición.
- v-for: Renderiza una lista de elementos usando un bucle.
Ejemplos de Directivas
<template>
<div>
<!-- v-bind -->
<img v-bind:src="imageSrc" alt="Vue Logo">
<!-- v-model -->
<input v-model="message" placeholder="Edit me">
<p>Message is: {{ message }}</p>
<!-- v-if -->
<p v-if="seen">Now you see me</p>
<!-- v-for -->
<ul>
<li v-for="item in items" :key="item.id">{{ item.text }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
imageSrc: 'https://vuejs.org/images/logo.png',
message: '',
seen: true,
items: [
{ id: 1, text: 'Item 1' },
{ id: 2, text: 'Item 2' },
{ id: 3, text: 'Item 3' }
]
}
}
}
</script>
- Ejercicio Práctico
Ejercicio
Crea una aplicación Vue.js que tenga un componente de lista de tareas. La aplicación debe permitir agregar nuevas tareas y marcar las tareas como completadas.
Requisitos
- Crea un componente
TaskList.vueque muestre una lista de tareas. - Crea un componente
TaskItem.vueque represente una tarea individual. - Usa
v-modelpara enlazar un campo de entrada a una nueva tarea. - Usa
v-forpara iterar sobre las tareas y mostrarlas. - Usa
v-bindpara enlazar clases CSS basadas en el estado de la tarea (completada o no completada). - Usa
v-onpara manejar eventos de clic y marcar las tareas como completadas.
Solución
<!-- src/components/TaskItem.vue -->
<template>
<li :class="{ completed: task.completed }">
<input type="checkbox" v-model="task.completed">
{{ task.text }}
</li>
</template>
<script>
export default {
name: 'TaskItem',
props: {
task: Object
}
}
</script>
<style scoped>
.completed {
text-decoration: line-through;
}
</style><!-- src/components/TaskList.vue -->
<template>
<div>
<input v-model="newTask" @keyup.enter="addTask" placeholder="Add a task">
<ul>
<TaskItem v-for="task in tasks" :key="task.id" :task="task"/>
</ul>
</div>
</template>
<script>
import TaskItem from './TaskItem.vue'
export default {
name: 'TaskList',
components: {
TaskItem
},
data() {
return {
newTask: '',
tasks: [
{ id: 1, text: 'Learn Vue.js', completed: false },
{ id: 2, text: 'Build a project', completed: false }
]
}
},
methods: {
addTask() {
if (this.newTask.trim() !== '') {
this.tasks.push({
id: this.tasks.length + 1,
text: this.newTask,
completed: false
});
this.newTask = '';
}
}
}
}
</script><!-- src/App.vue -->
<template>
<div id="app">
<TaskList />
</div>
</template>
<script>
import TaskList from './components/TaskList.vue'
export default {
name: 'App',
components: {
TaskList
}
}
</script>Conclusión
En esta sección, hemos cubierto los conceptos básicos de Vue.js, incluyendo la configuración del entorno, la creación de componentes, y el uso de directivas. También hemos realizado un ejercicio práctico para consolidar estos conceptos. En el siguiente módulo, profundizaremos en temas más avanzados de Vue.js y cómo integrarlo con otras herramientas y librerías.
JavaScript: De Principiante a Avanzado
Módulo 1: Introducción a JavaScript
- ¿Qué es JavaScript?
- Configuración de tu Entorno de Desarrollo
- Tu Primer Programa en JavaScript
- Sintaxis y Conceptos Básicos de JavaScript
- Variables y Tipos de Datos
- Operadores Básicos
Módulo 2: Estructuras de Control
- Sentencias Condicionales
- Bucles: for, while, do-while
- Sentencias Switch
- Manejo de Errores con try-catch
Módulo 3: Funciones
- Definición y Llamada de Funciones
- Expresiones de Función y Funciones Flecha
- Parámetros y Valores de Retorno
- Ámbito y Closures
- Funciones de Orden Superior
Módulo 4: Objetos y Arrays
- Introducción a los Objetos
- Métodos de Objeto y la Palabra Clave 'this'
- Arrays: Conceptos Básicos y Métodos
- Iteración sobre Arrays
- Desestructuración de Arrays
Módulo 5: Objetos y Funciones Avanzadas
- Prototipos y Herencia
- Clases y Programación Orientada a Objetos
- Módulos e Importación/Exportación
- JavaScript Asíncrono: Callbacks
- Promesas y Async/Await
Módulo 6: El Modelo de Objetos del Documento (DOM)
- Introducción al DOM
- Selección y Manipulación de Elementos del DOM
- Manejo de Eventos
- Creación y Eliminación de Elementos del DOM
- Manejo y Validación de Formularios
Módulo 7: APIs del Navegador y Temas Avanzados
- Almacenamiento Local y de Sesión
- Fetch API y AJAX
- WebSockets
- Service Workers y Aplicaciones Web Progresivas (PWAs)
- Introducción a WebAssembly
Módulo 8: Pruebas y Depuración
- Depuración de JavaScript
- Pruebas Unitarias con Jest
- Pruebas de Integración
- Pruebas de Extremo a Extremo con Cypress
Módulo 9: Rendimiento y Optimización
- Optimización del Rendimiento de JavaScript
- Gestión de Memoria
- Manipulación Eficiente del DOM
- Carga Perezosa y División de Código
Módulo 10: Frameworks y Librerías de JavaScript
- Introducción a React
- Gestión de Estado con Redux
- Conceptos Básicos de Vue.js
- Conceptos Básicos de Angular
- Elegir el Framework Adecuado
