...
Como podemos ver, estos archivos se dividen en diferentes bloques. En este caso vemos tres, pero hay alguno más que podemos incluir.
Template: código HTML
En el bloque template se incluye el código HTML del código. Se trata de HTML enriquecido, pues podremos referenciar a variables y métodos definidos en la parte JavaScript del componente. Hay que tener en cuenta que sólo puede haber un componente HTML en el primer nivel. Por ejemplo, teniendo todo lo que contenga envuelto en un div. Vamos a ver la sintaxis de las funciones que nos ofrece este HTML enriquecido.
...
| Bloque de código | ||
|---|---|---|
| ||
<button v-on:click="counter += 1">Add 1</button> <button @click="counter += 1">Add 1</button> |
Script
El bloque script contiene la funcionalidad JavaScript del componente, pudiendo definir tanto variables propias como métodos, así como modificar el funcionamiento del propio componente. Para entender cómo funcionan los componentes, y cómo modificar su comportamiento, tenemos que conocer su ciclo de vida:
...
| Bloque de código | ||
|---|---|---|
| ||
<script>
import OtroComponente from './OtroComponente.vue';
export default {
name: Componente,
props: ['prop1', 'prop2'],
data() {
return {
mensaje: "Hola"
}
},
computed: {
mensajeAlReves: function() {
return this.mensaje.reverse();
}
},
methods: {
hacerCosas() {
// Código js
}
},
watch: {
mensaje: function(newValue, oldValue) {
console.log("El mensaje ha cambiado de '" + oldValue + "' a '" + newValue + "'");
}
},
components: {
OtroComponente
},
beforeCreate() {},
created() {},
beforeMount() {},
mounted() {},
beforeUpdate() {},
updated() {},
beforeDestroy() {},
destroyed() {}
}
</script> |
Style
Los bloques style incluyen estilos css. En este caso, se pueden tener varios bloques style:
<styles>: estilos globales, se aplicarán a todo el proyecto.<styles scoped>: se aplica sólo al componente. Estos no se aplican tampoco a componentes hijos, para eso podemos utilizar::v-deep, de esta forma:Bloque de código language css <style scoped> #tabla-asignaturas ::v-deep .p-datatable-tbody tr td { border: none !important; } #tabla-asignaturas ::v-deep .p-datatable-row { vertical-align: top; } </style>
i18n
En la página de documentación de internacionalización podemos ver cómo incluir un bloque para especificar las cadenas de texto y sus traducciones en el propio componente.