• Vue的模板语法之插值——Vue学习笔记(2)


    Vue官网:Vue模板语法-插值

    本文主要学习以下内容:

    插值:

    •  文本
    •  原始HTML
    •  Attribute
    •  使用JavaScript表达式

    模板语法

    • 就是做前端渲染,即将数据填充到HTML标签中。
    • 在底层的实现上,Vue将模板编译成虚拟DOM渲染函数。
    • 结合响应系统,Vue能够只能的计算出最少重新渲染多少组件,并把DOM操作数减到最少。

    插值

    文本

    • 数据绑定使用“Mustache”语法(双大括号)的文本插值
    <div>{{ msg }}</div>
    <div v-once>这个将不会改变: {{ msg1 }}</div>
    • v-once:只渲染元素和组件一次。当数据改变时,插值处的内容不会更新。当心使用,留心是否影响该节点上的其他数据绑定

    运行结果如下图:

    原始HTML

    • 双大括号插值会把数据解析为简单的文本
    • 需要出书HTML代码,需要v-html指令
    <p>使用双大括号:{{ html }}</p>
    <p>使用v-html指令:<span v-html="html"></span></p>

    运行结果如下图:

    Attribute

    Mustache语法不能用在HTML attribute(html标签的属性)上面,需要使用v-bind指令

    <button style="100px;height:50px;" v-bind:disabled="isButtonDisabled"></button>
    <p>{{ isButtonDisabled ? '不可点击' : '可点击'}}</p>

    运行结果如下图:

    使用JavaScript表达式

    • 可以使用JavaScript表达式,每个表达式都必须是单个表达式
    <!-- 使用 JavaScript 表达式 -->
    <p>{{ num + 1 }}</p>
    <p>{{ ok ? 'YES' : 'NO' }}</p>
    <p>message:{{ message }}</p>
    <p>message反转:{{ message.split('').reverse().join('') }}</p>

    运行结果如下图:

    以下不会生效:

    <!-- 这是语句,不是表达式 -->
    {{ var a = 1 }}
    
    <!-- 流控制也不会生效,请使用三元表达式 -->
    {{ if (ok) { return message } }}

    代码附录

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>插值</title>
            <!-- 开发环境版本,包含了有帮助的命令行警告 -->
            <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        </head>
        <body>
            <div id="app">
                <!-- 文本 -->
                <div>{{ msg }}</div>
                <div v-once>这个将不会改变: {{ msg1 }}</div>
                <!-- 原始HTML -->
                <p>使用双大括号:{{ html }}</p>
                <p>使用v-html指令:<span v-html="html"></span></p>
                <!-- Attribute -->
                <button style="100px;height:50px;" v-bind:disabled="isButtonDisabled"></button>
                <p>{{ isButtonDisabled ? '不可点击' : '可点击'}}</p>
                
                <!-- 使用 JavaScript 表达式 -->
                <p>{{ num + 1 }}</p>
                <p>{{ ok ? 'YES' : 'NO' }}</p>
                <p>message:{{ message }}</p>
                <p>message反转:{{ message.split('').reverse().join('') }}</p>
            </div>    
            <script type="text/javascript">
                var vm = new Vue({
                    el: '#app',
                    data: {
                        msg: 'Hello Vue',
                        msg1: 'Hello World',
                        html: '<span style="color:blue"> This should be blue. </span>',
                        isButtonDisabled:true,
                        num:0,
                        ok:true,
                        message:"Hello, I'm Fanny!"
                    }
                })
            </script>
        </body>
    </html>
  • 相关阅读:
    洛谷 P2058 海港(模拟)
    LA 3708 墓地雕塑(模拟)
    Uva 11300 Spreading the Wealth(贪心)
    UVA 11729 Commando War (贪心)
    【洛谷习题】Likecloud-吃、吃、吃
    【洛谷习题】多米诺骨牌
    【洛谷习题】相似基因
    【NOI1995】石子合并
    【洛谷习题】尼克的任务
    【NOIP2004】合唱队形
  • 原文地址:https://www.cnblogs.com/china-fanny/p/12362134.html
Copyright © 2020-2023  润新知