Vue mustache语法&常用指令

mustache

内容渲染

   使用mustache语法{{变量}}进行渲染操作,它将会从Vue实例中查找这个变量。

   image-20201120144245653

<body>
    <div id="app">
        <p>{{ msg }}</p>
    </div>
    <script src="./vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                msg: "HELLO,WORLD",
            }
        })
    </script>
</body>

四则操作

   mustache语法在渲染时支持四则操作,如下所示:

   image-20201120144455173

<body>
    <div id="app">
        <p>{{ num1 + num2 }}</p>
        <p>{{ num1 * num2 }}</p>
        <p>{{ num1 - num2 }}</p>
        <p>{{ num1 / num2 }}</p>
    </div>
    <script src="./vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                num1: 200,
                num2: 100,
            }
        })
    </script>
</body

Vue指令

v-once

   当标签中添加该属性指令时,标签渲染的内容将是固定的不会随着数据层数据的动态改变而进行改变。

   指令:v-once

<body>
    <div id="app">
        <p>{{ num1 + num2 }}</p>
        <p v-once>{{ num1 + num2 }}</p>
    </div>
    <script src="./vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                num1: 200,
                num2: 100,
            }
        })
    </script>
</body>

v-html

   当标签中添加该属性指令时,该标签渲染的内容将会以HTML代码呈现。

   注意,该属性指令应该通过等号绑定一个数据

   image-20201120145406980

<body>
    <div id="app">
        <p v-html="msg"></p>
    </div>
    <script src="./vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                msg:"<a href='http://www.google.com/'>谷歌</a>"
            }
        })
    </script>
</body>

v-text

   这个属性指令和直接使用{{}}渲染内容无太大差异,如果渲染内容是一个HTML标签,其本质原理都是将<替换成&lt;,将>替换成&gt;

   这会预防XSS攻击。

   image-20201120145517824

<body>
    <div id="app">
        <p v-text="msg"></p>
    </div>
    <script src="./vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                msg:"<a href='http://www.google.com/'>谷歌</a>"
            }
        })
    </script>
</body>

v-show

   该属性指令为false时将该标签将添加display:none的样式。

   image-20201120145712258

<body>
    <div id="app">
        <p v-show="false">{{msg}}</p>
        <p v-show="true">{{msg}}</p>
    </div>
    <script src="./vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                msg:"HELLO,WORLD"
            }
        })
    </script>
</body>

v-pre

   该属性指令会将标签中的内容按照原本格式进行呈现,类似于<pre>标签。

   image-20201120145812447

<body>
    <div id="app">
        <p v-pre>{{msg}}</p>
        <p>{{msg}}</p>
    </div>
    <script src="./vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                msg:"HELLO,WORLD"
            }
        })
    </script>
</body>

v-clock

   在网络情况较差的环境下,可能会出现模板渲染不及时的问题。

   使用v-cloak属性指令可挡住{{}}模板语法,使用户获得更好的体验。

   尝试将以下代码中的setTimeout去除,以查看效果。

   注意:需要手动添加样式

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

<body>
<div id="app">
    <p v-cloak>{{msg}}</p>
</div>
<script src="./vue.js"></script>
<script>
    setTimeout(() => {
        const app = new Vue({
            el: "#app",
            data: {
                msg: "HELLO,WORLD"
            }
        })
    }, 3000)
</script>
</body>
posted @ 2020-11-20 15:03  云崖先生  阅读(558)  评论(0编辑  收藏  举报