Vue学习笔记(二) 模板语法

news/2024/7/10 1:38:33 标签: Vue, 模板语法

Vue 使用基于 HTML 的模板语法,允许开发者将 DOM 绑定到底层 Vue 实例的数据

而在底层实现上,Vue 将模板编译成虚拟 DOM 渲染函数

结合响应系统,Vue 可以计算出最少需要重新渲染多少组件,把 DOM 操作减到最少

1、插值

(1)普通文本

  • 使用 v-text 指令,更新元素的 textContent
<!DOCTYPE html>
<html>

<head>
    <title>Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

<body>
    <div id="app">
        <p v-text="message"></p>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#app',
            data: {
                message: "Hello Vue"
            }
        })
    </script>
</body>

</html>
  • 使用 Mustache 语法(双大括号语法),更新部分的 textContent
<!DOCTYPE html>
<html>

<head>
    <title>Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

<body>
    <div id="app">
        <p>Hello {{message}}</p>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#app',
            data: {
                message: "Vue"
            }
        })
    </script>
</body>

</html>

(2)原始 HTML

由于双大括号会将数据解释为普通文本,因此为了输出 HTML,可以使用 v-html 指令

<!DOCTYPE html>
<html>

<head>
    <title>Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

<body>
    <div id="app">
        <p v-html="message"></p>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#app',
            data: {
                message: "<h1>Hello Vue</h1>"
            }
        })
    </script>
</body>

</html>

(3)HTML 属性

由于双大括号不能作用在 HMTL 属性上,因此可以使用 v-bind 指令

<!DOCTYPE html>
<html>

<head>
    <title>Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

<body>
    <div id="app">
        <button v-bind:disabled="isButtonDisabled">Hello Vue</button>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#app',
            data: {
                isButtonDisabled: true
            }
        })
    </script>
</body>

</html>

(4)JavaScript 表达式

在双大括号中可以使用完全的 JavaScript 表达式,但是 只能包含单个表达式

<!DOCTYPE html>
<html>

<head>
    <title>Demo</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

<body>
    <div id="app">
        {{ message.split('').reverse().join('') }}
    </div>

    <script>
        new Vue({
            el: '#app',
            data: {
                message: 'HELLO'
            }
        })
    </script>
</body>

</html>

2、指令

指令是带有 v- 前缀的特殊特性,当表达式的值发生改变时,会将其产生的影响作用于 DOM

上面所使用的 v-textv-htmlv-bind 都是指令,让我们来重新回顾一下:

<!-- 使用 v-text -->
<p v-text="message"></p>
<!-- 使用 v-html -->
<p v-html="message"></p>
<!-- 使用 v-bind -->
<button v-bind:disabled="isButtonDisabled">Button</button>

(1)参数

一个指令可以没有参数(例如上面的 v-html),也可以带有参数(例如上面的 v-bind:disabled

disabled 是 v-bind 指令的参数,该指令将 disabled 属性的值和 isButtonDisabled 表达式的值联系起来

(2)动态参数

此外,可以用方括号括起来的 JavaScript 表达式作为一个指令的动态参数,例如:

<a v-on:[eventName]="doSomething"> ... </a>

eventName 会作为一个 JavaScript 表达式动态求值,这样我们就可以为一个动态的事件名绑定处理函数

例如,当 eventName 的值为 "focus" 时,v-on:[eventName] 将等价于 v-on:focus

使用动态参数有下面几个需要注意的地方:

  • 动态参数预期得到一个字符串,异常情况下得到一个 null 用于显示移除绑定,其它非字符串类型会触发一个警告
  • 在动态参数表达式中,空格和引号放在 HTML 属性中是无效的
  • 在动态参数表达式中,大写字母放在 HTML 属性中可能会被浏览器自动转换成小写

(3)缩写

Vuev-bindv-on 两个常用的属性提供了缩写

  • v-bind
<!-- 完整语法 -->
<a v-bind:href="url">...</a>

<!-- 缩写 -->
<a :href="url">...</a>
  • v-on
<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

<!-- 缩写 -->
<a @click="doSomething">...</a>

http://www.niftyadmin.cn/n/1849891.html

相关文章

Vue学习笔记(三) 计算属性和侦听属性

1、计算属性&#xff08;computed&#xff09; &#xff08;1&#xff09;计算属性 模板的设计初衷是为了处理简单的逻辑&#xff08;声明式逻辑&#xff09;&#xff0c;在模板中加入过多的逻辑会使模板难以阅读和维护 <!DOCTYPE html> <html><head><…

[计算机网络笔记06] 集线器和交换机的区别

1.集线器和交换机 &#xff08;1&#xff09;早期的总线型以太网 &#xff08;2&#xff09;使用双绞线和集线器HUB的星型以太网 &#xff08;3&#xff09;在物理层扩展以太网 &#xff08;4&#xff09;以太网交换机 主机通过集线器发送单播帧&#xff0c;集线器上的每个…

Vue学习笔记(四) 条件渲染和列表渲染

1、条件渲染 &#xff08;1&#xff09;v-if v-if 指令 用于条件性&#xff08;根据表达式的值&#xff09;渲染内容&#xff0c;可以与 v-else 指令 和 v-else-if 指令 一同使用 <!DOCTYPE html> <html><head><title>Demo</title><script…

[计算机网络笔记07] 交换机的自学习算法

1.交换机的转发原理 2.交换机的自学习算法 &#xff08;1&#xff09;A到B 帧由主机A出发到接口1&#xff0c;交换机在帧交换表中登记&#xff0c;之后查询目的MAC地址&#xff0c;找不到&#xff0c;于是从其他接口转发出去&#xff0c;最后通过3接口找到主机B。其他的主机都…

[计算机网络笔记08] 交换机的生成树协议STP—功能介绍

1.交换机的生成树协议 &#xff08;1&#xff09;如何提高网络的可靠性 这样的链路&#xff0c;一旦链路出现故障&#xff0c;各交换机之间就无法通信。 为了解决这个问题&#xff0c;我们添加了冗余链路&#xff0c;当其中一条链路发送故障时&#xff0c;其他链路可以通信。…

Vue学习笔记(六) 表单输入绑定

v-model 指令在表单元素上创建双向数据绑定&#xff0c;它负责用于监听用户输入事件以更新数据 注意&#xff0c;v-model 会忽略所有表单元素特性的初始值&#xff0c;而总是将 Vue 实例的数据作为数据来源 1、输入框 <!DOCTYPE html> <html><head><ti…

[计算机网络笔记09] 交换机的生成树协议STP—工作原理

1.生成树协议STP 2.生成树算法—选举根交换机 &#xff08;1&#xff09;这里所有交换机的优先级相同&#xff0c;因此比较MAC地址&#xff0c;MAC地址最小的为A交换机&#xff0c;因此根交换机为A。 3.生成树算法—选举根端口 &#xff08;1&#xff09;A—>B为4&#…

Vue学习笔记(五) 样式绑定和事件处理

1、样式绑定 class 和 style 属性都可以控制元素的显示样式&#xff0c;我们可以使用 v-bind 指令对它们进行绑定 &#xff08;1&#xff09;绑定 class 对象语法 我们可以将一个对象传给 v-bind:class&#xff0c;它将根据传入对象的值动态切换 class <!DOCTYPE html&…