Directiva v-cloak de Vue3
v-cloakLa directiva se usa para ocultar la plantilla no compilada hasta que la instancia del componente esté lista.
Descripción básica
v-cloakLa directiva se utiliza para resolver el problema del “parpadeo de plantilla no compilada” al usar plantillas DOM. Cuando el usuario accede a la página, es posible que vea las{{ }}etiquetas mustache originales, hasta que el componente Vue se monta y renderiza el contenido.
v-cloakSe mantendrá en el elemento hasta que la instancia del componente asociado se haya montado. Junto con reglas CSS, se puede ocultar la plantilla original durante este período.
- Tipo esperado: Ninguno (no acepta expresiones)
- Función: Oculta la plantilla no compilada hasta que el componente esté listo.
Nota: Esta directiva solo se necesita en configuraciones sin paso de compilación.
Uso básico
En el usov-cloakde v-cloak, es necesario combinarlo con reglas CSS:
Ejemplo
[v-cloak] {
display: none;
}
Ejemplo
{{ message }}
</div>
Cuando se completa la compilación,v-cloakel atributo se elimina automáticamente del elemento, y el elemento se muestra.
Escenarios de uso
v-cloakSe utiliza principalmente en los siguientes escenarios:
1. Introducción de Vue mediante CDN
Cuando se introduce Vue mediante CDN sin un paso de compilación, durante el breve lapso entre la carga de la página y el script de Vue, la plantilla podría no haberse compilado todavía:
Ejemplo
<html>
<head>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<style>
[v-cloak] {
display: none;
}
</style>
</head>
<body>
<div id="app">
<div v-cloak>
{{ message }}
</div>
</div>
<script>
const { createApp } = Vue
createApp({
data() {
return {
message: 'Hello Vue!'
}
}
}).mount('#app')
</script>
</body>
</html>
2. Estructura de plantilla compleja
Para plantillas complejas con múltiples enlaces de datos, v-cloak evita que el usuario vea contenido no renderizado:
Ejemplo
<h1>{{ title }}</h1>
<p>Bienvenido, {{ username }}</p>
<ul>
<li v-for="item in items" :key="item.id">
{{ item.name }}
</li>
</ul>
</div>
Principio de funcionamiento de v-cloak
- Cuando la página se carga, Vue aún no se ha inicializado, el
v-cloakatributo v-cloak está presente en el elemento - Las reglas CSS
[v-cloak] { display: none; }ocultan estos elementos - Vue se inicializa y compila la plantilla, creando datos reactivos
- Después de que el componente se monta, Vue elimina automáticamente el
v-cloakatributo - El elemento se muestra, presentando el contenido renderizado
Notas
Solo para escenarios sin paso de compilación: Al usar herramientas de compilación (como Vite, Webpack), la plantilla ya está compilada en la fase de construcción, por lo que no se necesita usar v-cloak.
Ejemplo
/* Se recomienda colocar el CSS en el head */
<head>
<style>
[v-cloak] {
display: none;
}
</style>
</head>
Es necesario usarlo junto con CSS: v-cloak por sí mismo no oculta contenido, debe combinarse con reglas CSS para que surta efecto.
Diferencia con las herramientas de compilación modernas
Al usar herramientas de compilación modernas (como Vite), no es necesario usar v-cloak, porque:
- La plantilla se compila previamente en la etapa de construcción
- El JavaScript, una vez empaquetado, se carga de manera inline o asíncrona
- El HTML inicial no contiene sintaxis de plantilla sin compilar
Por lo tanto, v-cloak se usa principalmente en la forma tradicional de introducción mediante CDN o en escenarios de páginas HTML simples.
Otras extensiones
Directivas integradas de Vue3