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 相关文章推荐
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
Dec 08 Javascript
jquery tools之tooltip
Jul 25 Javascript
一些常用的JavaScript函数(json)附详细说明
May 25 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
有关于eclipse配置spket需要注意的一些地方
Apr 07 Javascript
固定背景实现的背景滚动特效示例分享
May 19 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
May 07 Javascript
jQuery EasyUI提交表单验证
Jul 19 Javascript
微信小程序 http请求详细介绍
Oct 09 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
vue 项目打包时样式及背景图片路径找不到的解决方式
Nov 12 Javascript
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 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
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP中的日期时间处理利器实例(Carbon)
2017/06/09 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
用Greasemonkey 脚本收藏网站会员信息到本地
2009/10/26 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
js正文内容高亮效果的实现方法
2013/06/30 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
2015/08/31 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
深入学习jQuery Validate表单验证(二)
2016/01/18 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
微信小程序实现单个卡片左滑显示按钮并防止上下滑动干扰功能
2019/12/06 Javascript
Python编程中time模块的一些关键用法解析
2016/01/19 Python
Python中Selenium模拟JQuery滑动解锁实例
2017/07/26 Python
对python中的xlsxwriter库简单分析
2018/05/04 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
使用 django orm 写 exists 条件过滤实例
2020/05/20 Python
如何获取某个日期是当月的最后一天
2013/12/05 面试题
中学教师培训制度
2014/01/31 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
机械操作工岗位职责
2014/08/08 职场文书
图解上海144收音机
2021/04/22 无线电
Django框架中表单的用法
2022/06/10 Python