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

简介: 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)缩写


Vue 为 v-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>



文章知识点与官方知识档案匹配,可进一步学习相关知识

目录
相关文章
|
12天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
78 1
|
22天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
2月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
40 1
|
2月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
2月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
52 1
vue学习第一章
|
2月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
49 1
|
2月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
41 1
vue学习第四章
|
2月前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
35 1
vue学习第7章(循环)