Cómo crear componentes en Vue
Clase 23 de 53 • Curso Profesional de Vue.js 2
Contenido del curso
CLI y Dev Tools
- 3

Instalación de Vue.js: Node, Dev Tools y CLI
06:13 min - 4

Crear una aplicación Vue con CLI y webpack
12:49 min - 5

Cómo funciona webpack.config.js
10:38 min - 6

Babel: transpilador de JavaScript moderno
05:06 min - 7

ESLint con Standard JS: linteo automático en webpack
15:34 min - 8

Configuración de Sass y Bulma en Vue
06:18 min - 9

Cómo configurar Pug en Vue con webpack
04:23 min - 10
Diseño de Mockups: Práctica y Colaboración en Comunidad
00:20 min - 11
Creación de Vistas con Mockups y Vue.js
00:32 min
Manipulación del DOM
- 12

Expresiones en Vue: sintaxis doble llave
03:49 min - 13

Diferencia entre v-show y v-if en el DOM
06:22 min - 14

Qué es data binding en Vue.js
04:11 min - 15

Computed properties en Vue.js: cómo crearlas
04:13 min - 16

Qué son los watchers de Vue
02:25 min - 17

Eventos Vue: directiva v-on y métodos format
06:12 min - 18

Cómo construir una interfaz de búsqueda completa en Vue
19:03 min - 19
Manipulación del DOM con Vue.js: Práctica y Ejercicios
03:00 min
REST y HTTP
Sistema de Componentes
- 23

Cómo crear componentes en Vue
Viendo ahora - 24

Componentes Layout en Vue con Bulma
09:50 min - 25

Reactividad en Vue: $set y Object.assign
06:14 min - 26

Hooks del ciclo de vida en Vue.js
05:38 min - 27

Comunicación padre-hijo con props en Vue
23:27 min - 28

Eventos en Vue: comunicar hijo a padre
12:04 min - 29

Slots: HTML dinámico en componentes Vue
13:42 min - 30

Plugin Event Bus: comunicar componentes sin relación en Vue
19:19 min
Vue Router
Extendiendo VueJS
Clases, Animaciones y Transiciones36
Vuex
- 39

Cómo Vuex centraliza estados en Vue
03:41 min - 40

Instalación de Vuex con estado único
17:32 min - 41

Cómo usar mutations y commit en Vuex
08:16 min - 42

Getters de Vuex: mapGetters y store sincronizado
07:35 min - 43

Cómo dispatch ejecuta actions asincrónicas en ViewX
07:54 min - 44

Instalación de Viewex en Platzi Music
26:37 min
Nuxt.js
Deploy a Producción con Now
Conclusiones
Bonus
Crear componentes en Vue es clave para lograr HTML semántico, código reutilizable y mejor mantenibilidad. Aquí verás, paso a paso y con buenas prácticas, cómo registrar componentes en forma global y local, cuándo conviene cada enfoque y cómo evitar errores de compilación comunes.
¿Qué es el sistema de componentes de Vue y por qué importa?
Los componentes de Vue permiten escribir tus propios elementos HTML, haciendo el código más semántico, reutilizable y fácil de organizar. Con ellos puedes componer interfaces claras y mantener una estructura robusta.
- Componentes: elementos reutilizables con su propia plantilla y lógica.
- HTML semántico: etiquetas claras que comunican intención.
- Mantenibilidad: separación por piezas pequeñas y enfocadas.
- Reglas del template: siempre un único elemento padre en cada componente.
- Productividad: puedes apoyarte en plug ins del editor (por ejemplo, atajos o shorthands en Atom).
¿Cómo crear y registrar un componente global en Vue?
El registro global permite usar un componente en cualquier parte de la aplicación. Es práctico, aunque no siempre recomendable si buscas optimizar performance.
¿Cómo estructurar un archivo .vue mínimo?
Un componente puede comenzar solo con la plantilla si no necesita estilos ni script:
<!-- ChildComponent.vue --> <template> <h1>Este es un componente hijo</h1> </template>
Puntos clave.
- Mantén un único nodo raíz en el template.
- Si no usas <script> o <style>, elimínalos para no cargar el proceso de compilación.
¿Cómo registrar con Vue.component y usar el tag?
En tu punto de entrada (por ejemplo, main.js) importa y registra globalmente. Recuerda usar rutas relativas ./ y que en archivos .vue debes incluir la extensión.
// main.js import Vue from 'vue' import App from './App.vue' import ChildComponent from './ChildComponent.vue' Vue.component('child', ChildComponent) new Vue({ render: h => h(App) }).$mount('#app')
Luego, úsalo por nombre de etiqueta en App.vue:
<template> <div> <child></child> </div> </template>
¿Cuándo conviene el registro global?
Úsalo cuando el componente se empleará en la mayoría de vistas o cuando creas librerías tipo plug ins reutilizables. De lo contrario, prefiere el registro local para mejorar la performance de la aplicación.
¿Cómo registrar componentes locales y evitar errores comunes?
El registro local declara el componente directamente en el archivo donde se usa. Así controlas su alcance y evitas cargar componentes innecesarios.
¿Cómo importar y declarar con la propiedad components?
Crea un componente local simple:
<!-- LocalComponent.vue --> <template> <h1>Este es un local component</h1> </template>
En el componente padre (por ejemplo, ChildComponent.vue) importa y registra en la propiedad components. Recuerda que un componente exporta un objeto con export default usado como view model.
<!-- ChildComponent.vue --> <template> <div> <h1>Este es un componente hijo</h1> <local-component></local-component> </div> </template> <script> import LocalComponent from './LocalComponent.vue' export default { components: { LocalComponent // atajo de ES2015 si el nombre y la variable coinciden } } </script>
Claves prácticas.
- Propiedad components: mapea el nombre del elemento al objeto del componente.
- Usa atajos de ES2015 para simplificar objetos cuando los nombres coinciden.
¿Cómo escribir el tag en kebab-case a partir de PascalCase?
Vue transforma automáticamente nombres en PascalCase a kebab-case para las etiquetas. Es decir, LocalComponent se usa como <local-component>. Esto evita inconsistencias al escribir los tags en el template.
¿Cómo evitar el error por múltiples nodos raíz?
Si agregas más de un elemento en el template, encapsula todo en un contenedor (por ejemplo, <div>). De lo contrario, aparecerá un error de compilación y la aplicación no funcionará.
Buenas prácticas finales.
- Verifica en el inspector que el HTML final refleja el resultado compilado por Vue.
- Revisa el árbol de componentes para entender la jerarquía: App como raíz, luego hijos como Child y LocalComponent.
- Sigue la data y propiedades entre componentes desde esa vista.
¿Tienes dudas o ejemplos propios sobre registro global vs local, nombres de etiquetas o estructura de componentes? Comenta tus casos y soluciones para enriquecer el aprendizaje en equipo.