Vue.js从版本1.x到版本3.x,官方代码案例和推荐使用都是模板语法,那么本篇文章我们也根据官方的推荐,来了解一下模板语法是怎么一回事。
我们可以把 Vue.js 的模板语法,直接理解为 HTML 语法的一种扩展,它所有的模板节点声明、属性设置和事件注册等都是按照 HTML 的语法来进行扩展设计的。按照官方的说法就是“所有的 Vue 模板都是语法层面合法的 HTML,可以被符合规范的浏览器和 HTML 解析器解析”。
Vue 使用一种基于 HTML 的模板语法,使我们能够声明式地将其组件实例的数据绑定到呈现的 DOM 上
使用 v-tex t指令,将数据采用纯文本方式填充其空元素中
// 组合式
在元素中的某一位置采用纯文本的方式渲染数据
// 组合式
这是一个 DIV 元素,{{ student.name }},{{ student.desc }}
使用 v-html 指令,将数据采用 HTML 语法填充其空元素中
// 组合式
v-model 双向数据绑定指令,视图数据和数据源同步
一般情况下 v-model 指令用在表单元素中:
和 元素会绑定 value 属性并侦听 input 事件 和 会绑定 checked 属性并侦听 change 事件会绑定 value 属性并侦听 change 事件// 组合式
灯
是否确定
篮球 足球 羽毛球 乒乓球
男 女
证书等级:
去过的城市:
| 修饰符 | 作用 | 示例 |
|---|---|---|
.number | 自动将用户的输入值转为数值类型 | |
.trim | 自动过滤用户输入的首尾空白字符 | |
.lazy | 在 chang 时而非 input 时更新 | |
// 组合式
将用户输入的值转成数值 .number,懒更新 .lazy
去掉首尾空白字符
v-bind: 指令null 或者 undefined,那么该属性将会从渲染的元素上移除v-bind 非常常用,我们提供了特定的简写语法:// 组合式
![]()
![]()
直接使用 v-bind 来为元素绑定多个属性及其值
// 组合式
渲染结果:
class 和 style 可以和其他属性一样使用 v-bind 将它们和动态的字符串绑定;但是,在处理比较复杂的绑定时,通过拼接生成字符串是麻烦且易出错的;因此, Vue 专门为 class 和 style 的 v-bind 用法提供了特殊的功能增强;除了字符串外,表达式的值也可以是对象或数组。
绑定对象
// 组合式
error flat
胶囊 块
绑定数组
// 组合式
error flat
胶囊 块
绑定对象
// 组合式
背景色:文本色:
背景色:文本色:边框圆角:
绑定数组
还可以给 :style 绑定一个包含多个样式对象的数组,这些对象会被合并后渲染到同一元素上
// 组合式
背景色:文本色:胶囊:
背景色:文本色:胶囊:
v-if 指令用于条件性地渲染元素;该内容只会在指令的表达式返回真值时才被渲染v-else-if 提供的是相应于 v-if 的 else if 区块,它可以连续多次重复使用v-else 为 v-if 添加一个 else 区块v-else 和 v-else-if 指令必须配合 v-if 指令一起使用 ,否则它将不会被识别,而且语句块中间不能出现无关其他元素v-if 支持在 元素上使用,这只是一个不可见的包装器元素,最后渲染的结果并不会包含这个 元素// 组合式
是否显示:这是一个普通的标题标签
年龄: {{ age }}未成年
青年
中年
老年
周几: {{ week }}可以游泳
不可以游泳
v-show 按条件显示一个元素的指令v-show 会在 DOM 渲染中保留该元素v-show 仅切换了该元素上名为 display 的 CSS 属性v-show 不支持在 元素上使用,也不能和 v-else 搭配使用// 组合式
是否显示:这是一个普通的标题标签
年龄: {{ age }}未成年
= 18 && age < 35">青年
= 35 && age < 50">中年
= 50">老年
周几: {{ week }}
v-if 是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建v-if 也是惰性的:如果在初次渲染时条件值为 false,则不会做任何事;条件区块只有当条件首次变为 true 时才被渲染v-show 元素无论初始条件如何,始终会被渲染,只有 CSS display 属性会被切换v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销;如果需要频繁切换,则使用 v-show 较好;如果在运行时绑定条件很少改变,则 v-if 会更合适我们可以使用 v-on: 指令 (简写为@) 来监听 DOM 事件,并在事件触发时执行对应的 JavaScript
用法:v-on:click="" 或 @click=""
用法:
// 组合式
当前音量:{{ volume }}
| 事件修饰符 | 说明 |
|---|---|
.prevent | 阻止默认行为 |
.stop | 阻止事件冒泡 |
.capture | 以捕获模式触发当前的事件处理函数 |
.once | 绑定的事件只触发1次 |
.self | 只有在event.target是当前元素自身时触发事件处理函数 |
.passive | 向浏览器表明了不想阻止事件的默认行为 |
.prevent :阻止该事件的默认行为
// 组合式
百度
.stop :阻止事件产生的冒泡现象
// 组合式
.once :绑定的事件只触发 1 次
// 组合式
.self :只有在 event.target 是当前元素自身时触发事件处理函数
// 组合式
.capture 给元素添加一个监听器
// 组合式
.passive :不阻止事件的默认行为,与 .prevent 不要同时使用
// 组合式
百度
按键别名:.enter、.tab、.esc、.space、.up、.down、.left、.right、.delete (捕获 Delete 和 Backspace 两个按键)
系统修饰符:.ctrl、.alt、.shift、.meta
准确的修饰符:.exact
// 组合式
按下的键中包含 Enter 键事件:
按下的键中包含 Shift Enter 键事件:
按下的键只有 Shift Enter 键事件:
鼠标按键修饰符:.left、.right、.middle
// 组合式
使用 v-for 指令基于一个数组来渲染一个列表
语法:
in 前一个参数:item in itemsitem :值items :需要循环的数组in 前两个参数:(value, index) in itemsvalue :值index :索引items :需要循环的数组// 组合式
v-for 渲染数组, v-for="item in itmes"
- 编号:{{ sub.id }} --- 名称:{{ sub.name }}
v-for 渲染数组, v-for="{ 解构…… } in itmes"
- 编号:{{ id }} --- 名称:{{ name }}
v-for 渲染数组, v-for="(value, index) in itmes"
- 编号:{{ sub.id }} --- 名称:{{ sub.name }} --- 索引:{{ index }}
v-for 渲染数组, v-for="({ 解构…… }, index) in itmes"
- 编号:{{ id }} --- 名称:{{ name }} --- 索引:{{ index }}
使用 v-for 来遍历一个对象的所有属性,遍历的顺序会基于对该对象调用 Object.keys() 的返回值来决定
语法:
in 前一个参数:value in objectvalue :属性值items :需要循环的对象in 前两个参数:(value, name) in objectvalue :属性值name :键items :需要循环的对象in 前三个参数:(value, name, index) in objectvalue :属性值name :键index :索引items :需要循环的对象// 组合式
v-for 渲染对象, v-for="value in object"
- {{ value }}
v-for 渲染对象, v-for="(value, name) in object"
- 属性名:{{ name }} --- 属性值: {{ value }}
v-for 渲染对象, v-for="(value, name, index) in object"
- 属性名:{{ name }} --- 属性值: {{ value }} --- 索引:{{ index }}
当列表的数据变化时,默认情况下,vue 会尽可能的复用已存在的 DOM 元素,从而提升渲染的性能;但这种默认的性能优化策略,会导致有状态的列表无法被正确更新。
为了给 vue 一个提示,以便它能跟踪每个节点的身份,从而在保证有状态的列表被正确更新的前提下,提升渲染的性能;此时,需要为每项提供一个唯一的key属性:
key 的注意事项:
key 的类型只能是 Number/Stringkey 值必须具有唯一性key(该属性的值在此列表中唯一)keyv-for 指令时一定要指定 key 的值// 组合式
不使用key值
- {{ sub }}
使用索引当key值
- {{ sub }}
使用列表属性当key值(该属性必须再此列表中唯一)
- {{ sub }}
欢迎大家加入我的社区,在社区中会不定时发布一些精选内容:https://bbs.csdn.net/forums/db95ba6b828b43ababd4ee5e41e8d251?category=10003
以上就是 Vue3 中的模板语法,不懂得也可以在评论区里问我或私聊我询问,以后会持续发布一些新的功能,敬请关注。
我的其他文章:https://blog.csdn.net/weixin_62897746?type=blog
上一篇:Android面试题——JVM