vue教程-模板语法-v-cloak指令(解决闪动)

提出问题

在 vue教程-第一个程序 中,频繁刷新浏览器,会看到网页先显示 {{xxx}} 表达式,然后再替换成具体的值(电脑或浏览器运行卡顿时,会看到)

可通过谷歌浏览器设置断点验证这一效果:

在vue编译结束前,显示表达式,编译结束后,显示真正的值,这就产生了 闪烁(闪动)

这种用户体验非常不好

解决问题

使用 v-cloak 指令

样式

添加隐藏样式

<style>
    [v-cloak] {
        display: none;
        }
</style>

html

在表达式所在的标签中添加 v-cloak 指令

<div id="app" v-cloak>
    <div>{{msg}}</div>
    <div>{{1+2+3}}</div>
    <div>姓名:{{name}},年龄:{{age}}</div>
</div>

js

不需要做改动

<script type="importmap">
{
    "imports": {
        "vue": "./js/vue.esm-browser@3.5.13.js"
    }
}
</script>

<script type="module">
  import { createApp } from 'vue'

  createApp({
    data() {
        return {
            msg: 'Hello Vue!',
            name: '李雷',
            age: 20
        }
    }
  }).mount('#app')
</script>

效果

可通过断点观察效果:

先通过样式隐藏,vue编译结束后,再显示

完整代码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            [v-cloak] {
                display: none;
                }
        </style>
    </head>
    <body>
        <div id="app" v-cloak>
            <div>{{msg}}</div>
            <div>{{1+2+3}}</div>
            <div>姓名:{{name}},年龄:{{age}}</div>
        </div>

        <script type="importmap">
        {
            "imports": {
                "vue": "./js/vue.esm-browser@3.5.13.js"
            }
        }
        </script>
        <script type="module">
          import { createApp } from 'vue'

          createApp({
            data() {
                return {
                    msg: 'Hello Vue!',
                    name: '李雷',
                    age: 20
                }
            }
          }).mount('#app')
        </script>
    </body>
</html>

原文出处:/show_1GWEMsD1HDP.html