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 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
jQuery获得内容和属性方法及示例
Dec 02 Javascript
jQuery表格排序组件-tablesorter使用示例
May 26 Javascript
详解JavaScript的策略模式编程
Jun 24 Javascript
jQuery实现文件上传进度条特效
Aug 12 Javascript
jQuery使用ajax跨域获取数据的简单实例
May 18 Javascript
json的使用小结
Jun 08 Javascript
vue2.0开发实践总结之入门篇
Dec 06 Javascript
对称加密与非对称加密优缺点详解
Feb 06 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
js实现复制粘贴的两种方法
Dec 04 Javascript
Javascript设计模式之原型模式详细
Oct 05 Javascript
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
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
js实现简单登录功能的实例代码
2013/11/09 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
详解javascript实现瀑布流绝对式布局
2016/01/29 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
详解本地Node.js服务器作为api服务器的解决办法
2017/02/28 Javascript
使用bootstrap-paginator.js 分页来进行ajax 异步分页请求示例
2017/03/09 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
vue组件的写法汇总
2018/04/12 Javascript
Python中join和split用法实例
2015/04/14 Python
详解Python程序与服务器连接的WSGI接口
2015/04/29 Python
Python单例模式实例详解
2017/03/01 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Django model select的多种用法详解
2019/07/16 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
python logging添加filter教程
2019/12/24 Python
在Tensorflow中实现梯度下降法更新参数值
2020/01/23 Python
使用OpenCV实现道路车辆计数的使用方法
2020/07/15 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
自查自纠工作总结
2014/10/15 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
唐山大地震的观后感
2015/06/05 职场文书
珍爱生命主题班会
2015/08/13 职场文书
蔬果开业典礼发言稿应该怎么写?
2019/09/03 职场文书
vue选项卡切换的实现案例
2022/04/11 Vue.js
Java实现扫雷游戏详细代码讲解
2022/05/25 Java/Android
Windows Server 修改远程桌面端口的实现
2022/06/25 Servers