Vue v-cloak Directive
Example
Using v-cloak
to hide precompiled content.
<div id="app" v-cloak>
{{ message }}
</div>
Try it Yourself »
See more examples below.
Definition and Usage
The v-cloak
directive is used to hide content until compilation is finished.
Typically, v-cloak
prevents the user from seeing flickering of pre-compiled content including curly braces during the loading of the page.
To hide pre-compiled content, the element is marked with v-cloak
, and CSS rules are defined to hide this content until compilation is finished.
The v-cloak
directive only works for Vue code that compiles in the browser, so it is not useful when working with SFC (*.vue) files.
More Examples
Example 1
Using v-cloak
to display red text before the compilation is finished, so that we can see the pre-compilation phase more clearly.
<!DOCTYPE html>
<html>
<head>
<title>Vue v-cloak Directive</title>
<style>
[v-cloak] {
color: red;
}
#app {
padding: 10px;
font-size: x-large;
background-color: lightgreen;
}
</style>
</head>
<body>
<h1>Vue v-cloak Example</h1>
<p>The v-cloak directive is used to make the text red until the compilation is complete. Refresh the page, or click the "Run" button, to see the pre-compilation phase better.</p>
<div id="app" v-cloak>
{{ message }}
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
const app = Vue.createApp({
data() {
return {
message: "Hello World!"
}
}
})
app.mount('#app')
</script>
</body>
</html>
Try it Yourself »
Example 2
Using the JavaScript setTimeout()
function to delay the compilation by one second so that the effect from v-cloak
becomes more clear.
<!DOCTYPE html>
<html>
<head>
<title>Vue v-cloak Directive</title>
<style>
[v-cloak] {
opacity: 0.5;
}
#app {
padding: 10px;
font-size: x-large;
background-color: lightgreen;
}
</style>
</head>
<body>
<h1>Vue v-cloak Example</h1>
<p>Using the JavaScript setTimeout function to delay the Vue compilation to make the pre-compilation phase even more clear.</p>
<div id="app" v-cloak>
{{ message }}
</div>
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script>
setTimeout(() => {
const app = Vue.createApp({
data() {
return {
message: "Hello World!"
}
}
})
app.mount('#app')
}, 1000);
</script>
</body>
</html>
Try it Yourself »
Related Pages
JavaScript Reference: Window setTimeout()