Vue的Temlate语法

Vue的Temlate语法

1.插值

插值的定义

就是在data中定义了一些属性的值插入到DOM中渲染显示。

语法名称语法格式语法用途
Mustache{{属性名称}}将data属性中的值插入到DOM中
v-once指令<标签体 v-once>{{属性名}}你也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上的其它数据绑定
v-html指令<标签体 v-html='属性名'>输出真正的 HTML
v-text指令<标签体 v-text='属性名'>输出的是文本,和Mustache基本一致
v-pre指令<标签体 v-pre='属性名'>就是想让标签体内的东西原封不动的展示,不进行解析
v-cloak指令<标签体 v-cloak>在vue解析之前有这个属性的标签是不会显示的,display:none,vue解析之后就会将v-cloak删掉

Mustache:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Interpolation</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--Mustache语法-->
    <span>{{msg}}</span><br/>
    <span>{{msg}}!</span><br/>
    <!--大括号内可以有简单的表达式-->
    <span>{{name + ' : ' + phone}}</span><br/>
    <!--可以在大括号里面进行四则运算-->
    <span>{{money + 1000}}</span><br/>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        msg: 'msg',
        name: '张三',
        phone: '333',
        money: 4000,
      }
    })
  </script>
</body>
</html>

在这里插入图片描述
v-once:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Interpolation</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--Mustache语法-->
    <span>{{msg}}</span><br/>
    <span>{{msg}}!</span><br/>
    <!--大括号内可以有简单的表达式-->
    <span>{{name + ' : ' + phone}}</span><br/>
    <!--可以在大括号里面进行四则运算-->
    <span>{{money + 1000}}</span><br/>
    <span v-once>{{msg}}</span>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        msg: 'msg',
        name: '张三',
        phone: '333',
        money: 4000,
      }
    })
  </script>
</body>
</html>

在这里插入图片描述

v-html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Interpolation</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--Mustache语法-->
    <span>{{msg}}</span><br/>
    <span>{{msg}}!</span><br/>
    <!--大括号内可以有简单的表达式-->
    <span>{{name + ' : ' + phone}}</span><br/>
    <!--可以在大括号里面进行四则运算-->
    <span>{{money + 1000}}</span><br/>
    <span v-once>{{msg}}</span>
    <!--可以将html形式得字符串,以html得格式渲染-->
    <span v-html="title"><span><br/>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        msg: 'msg',
        name: '张三',
        phone: '333',
        money: 4000,
        title: '<h1>Interpolation</h1>'
      }
    })
  </script>
</body>
</html>

在这里插入图片描述
v-text:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Interpolation</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--Mustache语法-->
    <span>{{msg}}</span><br/>
    <span>{{msg}}!</span><br/>
    <!--大括号内可以有简单的表达式-->
    <span>{{name + ' : ' + phone}}</span><br/>
    <!--可以在大括号里面进行四则运算-->
    <span>{{money + 1000}}</span><br/>
    <span v-once>{{msg}}</span>
    <!--可以将html形式得字符串,以html得格式渲染-->
    <span v-html="title"></span><br/>
    <span v-text="text"></span><br/>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        msg: 'msg',
        name: '张三',
        phone: '333',
        money: 4000,
        title: '<h1>Interpolation</h1>',
        text: 'v-text指令'
      }
    })
  </script>
</body>
</html>

在这里插入图片描述

v-pre:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Interpolation</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--Mustache语法-->
    <span>{{msg}}</span><br/>
    <span>{{msg}}!</span><br/>
    <!--大括号内可以有简单的表达式-->
    <span>{{name + ' : ' + phone}}</span><br/>
    <!--可以在大括号里面进行四则运算-->
    <span>{{money + 1000}}</span><br/>
    <span v-once>{{msg}}</span>
    <!--可以将html形式得字符串,以html得格式渲染-->
    <span v-html="title"></span><br/>
    <!--v-text-->
    <span v-text="text"></span><br/>
    <!--v-pre-->
    <span v-pre>{{msg}}</span><br/>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        msg: 'msg',
        name: '张三',
        phone: '333',
        money: 4000,
        title: '<h1>Interpolation</h1>',
        text: 'v-text指令'
      }
    })
  </script>
</body>
</html>

在这里插入图片描述

小结:
v-text 与 Mustache不同之处
1.当页面的数据过大或者网络不好,又或者js延缓执行,Mustache是会暴露你写在DOM中的Mustache表达式的如:{{msg}}当然可以和v-cloak联用解决这个问题,而v-text指令则不会,它会直接隐藏。
2.v-text不够灵活,它会直接覆盖标签体内的内容。

2.绑定

绑定的定义:

将data中的属性的值,绑定到标签属性上不同于插值绑到标签体内。

语法名称语法格式语法用途
v-bind指令<标签体 v-bind:属性名称='值'>将data中的属性的值,绑定到标签属性上
v-bind的语法糖<标签体 :属性名称='值'>其实就是v-bind指令的简写
v-for指令<标签体 v-for=‘(元素,index) in 数组名称’>在该需要的循环添加的标签上添加
v-on指令<标签体 v-on:[事件名称]='[调用的方法名称]'>给该标签的事件绑定Vue中的方法
v-on的语法糖<标签体 @[事件名称]='[调用的方法名称]'>v-on指令的简写

v-bind:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Binding</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--将data属性中的值绑定到href属性上-->
    <!--v-bind的简写-->
    <a v-bind:href="ahref">跳转</a>
    <a :href="ahref">baidu</a>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        ahref: 'https://www.baidu.com/'
      }
    })
  </script>
</body>
</html>

在这里插入图片描述
按跳转之后就到了百度了
在这里插入图片描述
在这里插入图片描述
绑在class上:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Binding</title>
  <link rel="stylesheet" type="text/css" href="../css/vuecss.css">
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--将data属性中的值绑定到href属性上-->
    <!--v-bind的简写-->
    <a v-bind:href="ahref" v-bind:class="aclass">跳转</a>
    <a :href="ahref" :class="aclass">baidu</a>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        ahref: 'https://www.baidu.com/',
        aclass: 'binding'
      }
    })
  </script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
给class绑定一个对象:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Binding</title>
  <link rel="stylesheet" type="text/css" href="../css/vuecss.css">
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--将data属性中的值绑定到href属性上-->
    <!--v-bind的简写-->
    <a v-bind:href="ahref" v-bind:class="{binding : isBinding, fontClass : isFontClass}">跳转</a>
    <a :href="ahref" :class="aclass">baidu</a>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        ahref: 'https://www.baidu.com/',
        aclass: 'binding',
        isFontClass: true,
        isBinding: true,

      }
    })
  </script>
</body>
</html>

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然也可以通过调用方法实现

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Binding</title>
  <link rel="stylesheet" type="text/css" href="../css/vuecss.css">
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--将data属性中的值绑定到href属性上-->
    <!--v-bind的简写-->
    <a class="title" v-bind:href="ahref" v-bind:class="getClasses()">跳转</a>
    <a :href="ahref" :class="aclass">baidu</a>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        ahref: 'https://www.baidu.com/',
        aclass: 'binding',
        isFontClass: true,
        isBinding: true,
      },
      methods: {
        getClasses: function () {
          return {binding : isBinding, fontClass : isFontClass};
        }
      }
    })
  </script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
往绑定的class传入数组

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Binding</title>
  <link rel="stylesheet" type="text/css" href="../css/vuecss.css">
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--将data属性中的值绑定到href属性上-->
    <!--v-bind的简写-->
    <a class="title" v-bind:href="ahref" v-bind:class="getClasses()">跳转</a>
    
    <a :href="ahref" :class="[binding, fontClass]">baidu</a>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        ahref: 'https://www.baidu.com/',
        aclass: 'binding',
        isFontClass: true,
        isBinding: true,
        binding: 'binding',
        fontClass: 'fontClass'
      },
      methods: {
        getClasses: function () {
          return {binding : this.isBinding, fontClass : this.isFontClass};
        }
      }
    })
  </script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
将对象绑定到style中

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>BindingStyle</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--style绑定对象的格式:styel="{key(css属性名) : value(css的属性值)}"-->
    <div :style="{'font-size' : '100px'}" v-text="msg"></div>
    <div :style="{fontSize : defindFontSize}" v-text="msg"></div>
  </div>
  <script>
    var app = new Vue({
      el: '#app',
      data: {
        msg: 'Style',
        defindFontSize: '100px'
      }
    })
  </script>
</body>
</html>

在这里插入图片描述

将数组绑定到style

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>BindingStyle</title>
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
  <div id="app">
    <!--style绑定对象的格式:styel="{key(css属性名) : value(css的属性值)}"-->
    <div :style="{'font-size' : '100px'}" v-text="msg"></div>
    <div :style="{fontSize : defindFontSize}" v-text="msg"></div>
    <!--style绑定数组-->
    <div :style="[baseStyle, {fontSize : defindFontSize}, {color: defindColor}]" v-text="msg"></div>
  </div>
  <script>
    var app = new Vue({
      el: '#app',
      data: {
        msg: 'Style',
        defindFontSize: '100px',
        defindColor: 'red',
        baseStyle: {'font-style': 'italic'}
      }
    })
  </script>
</body>
</html>

在这里插入图片描述

v-for:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Location</title>
    <script type="text/javascript" src="../js/vue.js"></script>

</head>
<body>
    <div id="app">
        <ol>
            <li v-for="item in locations">{{item}}</li>
        </ol>
    </div>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                locations: ['北京', '上海', '广州', '深圳']
            }
        });
    </script>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
v-on:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Now Time</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <div id="app">
    <h1>当前时间: {{nowTime}}</h1>
    <!--这里的v-on:click之间不要空开,不然事件监听会失效-->
    <!--v-on:用于绑定事件,可以语法糖简写:@click,即代替v-on-->
        <button v-on:click="refeshTime">刷新当前时间</button>
        <button @click="refeshTime">刷新当前时间</button>
    </div>
    <script>
    var app = new Vue({
        el: "#app",
        data: {
            //值得注意的是在data里面起名字的时候不要起Vue的关键,不然响应式渲染会失败,如:date, dateTime
            nowTime: Date.now().toString()
        },
        //用于定义定义方法
        methods: {
            refeshTime: function () {
                var that = this;
                that.nowTime = Date.now().toString();
            }
        }
    })
    </script>
</body>
</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值