(08)Vue 入门——③ 模板语法 | Vue 基础理论实操

1,711 阅读2分钟
本文版权归 “公众号 | 前端一万小时” 所有,欢迎转载!

转载请注明出处,未经同意,不可修改文章内容。

🔥🔥🔥本系列文章已在“公众号 | 前端一万小时”更新完毕,有需要的小伙伴可按需前往查看。

🔥🔥🔥“前端一万小时”两大明星专栏——“从零基础到轻松就业”、“前端面试刷题”,已于本月大改版,合二为一,干货满满,欢迎点击公众号菜单栏各模块了解。


🔗本阶段对应的“官方文档”阅读“模板语法”章节

1 模板语法

在前面其实我们已经用过很多次模板语法了,大家熟悉的插值表达式 {{}} 就是其中之一,接下来我们再重新系统学习一下。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Vue 的模板语法</title>
  <script src="./vue.js"></script>
</head>
<body>
  <div id="app">
    {{name}} <!-- 模板语法1️⃣:插值表达式,以两个花括号包裹; -->

    <!-- ❗️注意:一个以 v- 开头的指令,它后面双引号中的值是指一个 JS 表达式,而不再是字符串! -->
    
    <div v-text="name"></div>  <!-- 模板语法2️⃣:v-text 指令的意思是让它
															 所在 div 的 innerText 变为 data 中 name 数据的内容; -->

    <div v-html="name"></div>  <!-- 模板语法3️⃣:v-html 指令的意思是让它
															 所在 div 的 innerHTML 的内容和 data 中的 name 绑定。 -->
  </div>

  <script>
    var vm = new Vue({
      el: '#app',
      data: {
        name: 'qdywxs'
      }
    })
  </script>
</body>
</html>

我们保存后可以在网页上看到三个“qdywxs”: vue08-01.png

❓它们看起来一样,但真的一样吗?

答: v-text 实际上和插值表达式的功能是一样的,也是一个模板语法,可以把数据变量显示在页面上**。**而 **v-html **会对内容不做任何解析,直接输出。

<script>
  var vm = new Vue({
    el: '#app',
    data: {
      name: '<h1>qdywxs</h1>' // ❗️我们把“qdywxs”外加一个 h1 标签!
    }
  })
</script>

这样更改后,我们可以看到使用插值表达式和 v-text 指令的都对 <h1> 标签进行了转义,然后再输出内容;而使用 v-html 指令的输出了一个带有 <h1> 样式的 qdywxsvue08-02.png

其实除了这三个模板语法,Vue 之中还有很多其他的可以绑定在模板上的语法。

比如我们之前用到的的 v-bind:content="item"v-on:click="handleClick" 等,都属于 Vue 的模板语法。

2 模板语法与 JS 表达式

在前面我们说到:一个以 v- 开头的指令,它后面双引号中的值是指一个 JS 表达式。

既然它是 JS 表达式,那么我们就可以给 name 再加上一个字符串。因为它们从整体来看,也是一个 JS 表达式。

<div id="app">
  {{name}}

  <div v-text="'hello ' + name"></div> <!-- 1️⃣添加“hello ”字符串; -->

  <div v-html="'hi ' + name"></div> <!-- 2️⃣添加“hi ”字符串。 -->
</div>

<script>
  var vm = new Vue({
    el: '#app',
    data: {
      name: 'qdywxs'
    }
  })
</script>

vue08-03.png

我们可以看到, v-textv-html 指令中写上 JS 表达式时没有问题。

❓插值表达式中可以写 JS 表达式吗?

我们给插值表达式中也添加一个字符串:

<div id="app">
  {{'Oli ' + name}} <!-- ❗️添加“Oli ”字符串; -->

  <div v-text="'hello ' + name"></div>
  <div v-html="'hi ' + name"></div>
</div>

保存刷新页面后可以看到,插值表达式也是可以写 JS 表达式的: vue08-04.png

🏆总结:插值表达式、 v-text 、 v-html 这三种语法的内容之中除了变量,都可以写 JS 表达式。

祝好,qdywxs ♥ you!