Vue.js的模板语法详解


Posted in Javascript onFebruary 16, 2020

Vue.js 模板语法

Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。

Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统。

结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。

使用“Mustache”语法 (即用双大括号包裹) 的文本插值:

<span>Message: {{ msg }}</span>

Mustache 标签将会被替代为对应数据对象上 “msg” 属性的值。无论何时,绑定的数据对象上 msg 属性发生了改变,插值处的内容都会更新。

如果使用 v-once 指令,你也能执行 一次性插值 ,当数据改变时,插值处的内容不会更新。但请留心这会影响到该节点上的其它数据绑定。

HTML

直接用双大括号包裹只是普通文本,如果想实现HTML代码效果,需要加入 v-html 指令

html部分:

<div id="app">
	<p>Using mustaches: {{ rawHtml }}</p>
	<p>Using v-html directive: <span v-html="rawHtml"></span></p>
</div>

js部分:

var vm = new Vue({
	el:'#app',
	data:{
	 rawHtml:'<span style="color:red">this is red</span>'
	}
});

v-html使用时 在span标签的前标签内写入“v-html="xxx” ,相当于将data中的值以HTML形式放入span标签内。

Vue.js的模板语法详解 

attribute(属性)

Mustache 语法不能作用在 HTML attribute 上,遇到这种情况应该使用 v-bind 指令:

格式:v-bind:属性="变量名"

html部分:

<div v-bind:color="textcolor">123</div>

js部分:

data:{
 textcolor:"red"
}

将变量textcolor的值“red"绑定在盒子的 "color" 属性上

Vue.js的模板语法详解

对于布尔属性,v-bind使用为:

<button v-bind:disabled="isButtonDisabled">Button</button>

如果 isButtonDisabled 的值是 null、undefinedfalse ,则 disabled attribute 甚至不会被包含在渲染出来的 <button> 元素中。

JS表达式

迄今为止,在我们的模板中,我们一直都只绑定简单的属性键值。但实际上,对于所有的数据绑定,Vue.js 都提供了完全的 JavaScript 表达式支持。

{{ data变量 + 1 }}    //
{{ data变量/表达式 ? 'true代码' : 'false代码' }}   //三元运算
{{ data变量.split('').reverse().join('') }}   //可以进行函数调用

<div v-bind:id="'list-' + id"></div>

这些表达式会在所属 Vue 实例的数据作用域下作为 JavaScript被解析。

限制是:每个绑定都只能包含单个表达式,所以下面的例子都不会生效。

<!-- 这是语句,不是表达式 -->
{{ var a = 1 }}

<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}

指令

指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 。指令的职责是, 当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。 回顾我们在介绍中看到的例子:

<p v-if="seen">现在你看到我了</p>

这里,v-if 指令将根据表达式 seen 的值的真假来插入/移除 <p> 元素。

参数

一些指令能够接收一个“参数”,在指令名称之后以冒号表示。例如, v-bind 指令可以用于响应式地更新 HTML属性值:

<a v-bind:href="url" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >...</a>

在这里 href 是参数 ,告知 v-bind 指令将该元素的 href attribute 与表达式 url 的值绑定。

另一个例子是 v-on 指令,它用于监听 DOM 事件:

<a v-on:click="doSomething">...</a>

在这里参数是监听的事件名。

动态参数

可以动态的绑定不同的属性,可以用 方括号 括起来的 JavaScript 表达式作为一个指令的参数:

<!--
注意,参数表达式的写法存在一些约束,如之后的“对动态参数表达式的约束”章节所述。
-->
<a v-bind:[attributeName]="url"> ... </a>

这里的 attributeName(命名中不能有逗号或冒号等符号) 会被作为一个 JavaScript 表达式进行动态求值,求得的值将会作为最终的参数来使用。

例如,如果你的 Vue 实例有一个 data 属性 attributeName,其值为 "href",那么这个绑定将等价于 <a v-bind:href="url" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >...</a>

同样地,你可以使用动态参数为一个动态的事件名绑定处理函数:

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

在这个示例中,当 eventName 的值为 "focus" 时,v-on:[eventName] 将等价于 v-on:focus。

修饰符

修饰符 (modifier) 是以半角句号 " . " 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

简写 v-bind 缩写

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

<!-- 缩写 -->
<a :href="url">...</a>

v-on 缩写

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>

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

总结

以上所述是小编给大家介绍的Vue.js的模板语法详解,希望对大家有所帮助!

Javascript 相关文章推荐
jQuery EasyUI API 中文文档 - Calendar日历使用
Oct 19 Javascript
使用GruntJS链接与压缩多个JavaScript文件过程详解
Aug 02 Javascript
jquery.validate的使用说明介绍
Nov 12 Javascript
js跨域访问示例(客户端/服务端)
May 19 Javascript
JS实现自动定时切换的简洁网页选项卡效果
Oct 13 Javascript
jQuery实现每隔几条元素增加1条线的方法
Jun 27 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
Jun 01 Javascript
Vue 2中ref属性的使用方法及注意事项
Jun 12 Javascript
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
使用layui的router来进行传参的实现方法
Sep 06 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 Javascript
vue 数字翻牌器动态加载数据
Apr 20 Vue.js
Vue两个版本的区别和使用方法(更深层次了解)
Feb 16 #Javascript
vue数据响应式原理知识点总结
Feb 16 #Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 #Javascript
JS localStorage存储对象,sessionStorage存储数组对象操作示例
Feb 15 #Javascript
ES6 proxy和reflect的使用方法与应用实例分析
Feb 15 #Javascript
js表达式与运算符简单操作示例
Feb 15 #Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
Feb 15 #Javascript
You might like
索尼SONY ICF-7600A(W)电路分析
2021/03/01 无线电
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
JS 面向对象之神奇的prototype
2011/02/26 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
返回页面顶部top按钮通过锚点实现(自写)
2013/08/30 Javascript
jqGrid增加时--判断开始日期与结束日期(实例解析)
2013/11/08 Javascript
jQuery的context属性用法实例
2014/12/27 Javascript
JavaScript中数组的合并以及排序实现示例
2015/10/24 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
基于jQuery实现瀑布流页面
2017/04/11 jQuery
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
解决layer弹出层的内容页点击按钮跳转到新的页面问题
2019/09/14 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
Python批量更改文件名的实现方法
2017/10/29 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python random从集合中随机选择元素的方法
2019/01/23 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
2019/04/09 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
2019/08/20 Python
python的pyecharts绘制各种图表详细(附代码)
2019/11/11 Python
基于python3的socket聊天编程
2020/02/17 Python
matplotlib subplot绘制多个子图的方法示例
2020/07/28 Python
Python日志器使用方法及原理解析
2020/09/27 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
勤俭节约倡议书
2014/04/14 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
小学安全工作汇报材料
2014/08/19 职场文书
医生爱岗敬业演讲稿
2014/08/26 职场文书
学习雷锋精神活动总结
2015/02/06 职场文书
幼师辞职信范文
2015/02/27 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书