Vue.js 模板语法
本章节将详细介绍 Vue.js 模板语法,如果对 HTML +Css +JavaScript 有一定的了解,学习起来将信手拈来。
Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。在底层的实现上, Vue 将模板编译成虚拟 DOM 渲染函数。结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。
插值
文本
文本插值是最常见的一种数据绑定方式,语法是使用双括号(Mustache)将变量包含。
实例
<div id="app">
<p>{{ message }}</p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello World! Vue'
}
})
</script>
上述 HTML 代码中的 message 与 script 中 data 的 message 属性绑定,两者数据同步,当我们更新data中对应的属性值时,无需操作 HTML,页面会自动更新数据。
我们也可以使用 v-once 指令,表示只执行一次插值,后面如果数据有改变,插值将不会更新。
实例
<div id="app">
<p v-once>{{ message }}</p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello World! Vue'
}
})
</script>
HTML
输出 HTML 代码,可以使用 v-html 指令。
实例
<div id="app">
<p v-once>{{ message }}</p>
<p v-html="html"></p>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
message: 'Hello World! 欢迎学习Vue',
html:'<font color="red">这是我的标题</font>'
}
})
</script>
上述代码会将 message 中的值作为 HTML 元素插入 <p></p> 中
注意:在页面上动态的渲染html是一件很危险的事情,因为它很容易导致 XSS 攻击 (跨站脚本攻击)。 在vue的官方文档也有说明这一点
属性
要给 HTML 元素绑定属性,不能直接使用文本插值,vue 有特定的指令 【v-bind】进行属性的绑定。
实例
<div id="app">
<h2 v-bind:class="value">v-bind</h2>
</div>
<script>
var app = new Vue({
el: "#app",
data: {
value: "bind"
}
})
</script>
上述代码中,我们为 h2 标签添加了一个 class=“bind” 的属性。
属性的插值使用比较频繁,所以vue也提供了该指令的简写【:】,一个冒号,效果跟使用【v-bind:】一样。
实例
<div id="app">
<h2 v-bind:id="id" :class="v_class" :title="v_title">vue 多属性绑定</h2>
</div>
<script>
var app = new Vue({
el: "#app",
data: {
id:"test_id",
v_class: "v_class",
v_title:"vue 的v-bind多属性绑定"
}
})
</script>
JavaScript 表达式
上述介绍的几种插值方式都是简单的键值绑定,但在实际开发中,部分值要根据一些规则进行处理,这时候可以使用 JavaScript 表达式来实现。
实例
<div id="app">
<h2 v-bind:id="id" :class="v_class" :title="v_title">vue 多属性绑定</h2>
<!-- toLowerCase(),将字母转换为小写 -->
<h2>{{name.toLowerCase()}}</h2> <!--这里返回为pzkloveyou -->
</div>
<script>
var app = new Vue({
el: "#app",
data: {
id:"test_id",
v_class: "v_class",
v_title:"vue 的v-bind多属性绑定",
name:'PZKLOVEYOU'
}
})
</script>
上述代码在输出时把大写的 PZKLOVEYOU 转换成了小写的 pzkloveyou。
注意:使用 JavaScript 表达式进行运算时,只能使用单个表达式或者链式调用,不能使用语句。
指令
指令指的是带有【v-】前缀的特殊属性,在插值中,我们已经使用了【v-html】和【v-bind】这两个指令。可以看出,指令的职责是当表达式的值改变时,响应式地作用于 DOM。
参数
<a v-bind:href="url"></a>
上述代码中 href 就是【v-bind】指令的参数,告知【v-bind】指令将 href 属性和 url 的值绑定在一起。
修饰符
修饰符(Modifiers)是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。
<form v-on:submit.prevent="onSubmit"></form>
上述代码中,.prevent 是一个修饰符,告诉【v-on】指令对于触发的事件调用 event.preventDefault()。
更多关于修饰符的知识我们将在后续章节学习。
过滤器
对于一些要经过复杂计算才显示的插值,简单的表达式可能无法满足,这时可以使用vue的过滤器进行处理。 过滤器在插值和【v-bind】指令中使用,格式如下:
<!-- 在两个大括号中 -->
{{ name | myfilters }}
<!-- 在 v-bind 指令中 -->
<div v-bind:id="rawId | formatId"></div>
实例
<div id="app">
<h2>{{name | myfilter}}</h2>
</div>
<script>
var app = new Vue({
el: "#app",
data: {
name: "pzk"
},
filters: {
myfilter(value) {
return value.split('').reverse().join(''); //函数返回的是kzp
}
}
})
</script>
上述代码中定义了一个myfilters的过滤器,功能是将插值进行反转后输出。
多个过滤器可以串联使用,下面实例是在一个插值中使用了两个过滤器:
实例
<div id="app">
<p>{{name | myfilter}}</p>
<p>{{name | myfilter1 | touppercase}}</p>
</div>
<script>
var app = new Vue({
el: "#app",
data: {
name: "pzk"
},
filters: {
myfilter(value) {
return value.split('').reverse().join(''); //函数返回的是kzp
},
myfilter1(value) {
return value.split('').reverse().join(''); //函数返回的是kzp 同上,在这里只是做一个小小的区别
},
touppercase(value) {
return value.toUpperCase(); //函数返回的是KZP 字母变成大写
}
}
})
</script>
上述代码中过滤器从左到右依次执行,先将插值反转,然后再转换成大写输出。
缩写
对于【v-on】和【v-bind】这两个最常使用的指令,vue提供了简写。
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 模板语法的更多相关文章
- Vue.js模板语法介绍
Vue.js模板.指令 模板语法概述 1.如何理解前端渲染? 把数据填充到HTML标签中,一般我们使用Ajax将数据从后台查询出,结合模板() 2.前端渲染方式 2.1.原生js拼接字符串 使 ...
- 第六篇:vue.js模板语法(,属性,指令,参数)
Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统. 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上.( ...
- Vue.js模板语法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue.js 数据绑定语法详解
Vue.js 数据绑定语法详解 一.总结 一句话总结:Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue ...
- vue基础---模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...
- VUE:模板语法(小白自学)
VUE:模板语法 一:何为声明式 安装规定的语法,去实现一些效果(不需要管流程). 二:模板语法 <!DOCTYPE html> <html> <head> < ...
- 【Vue】Vue框架常用知识点 Vue的模板语法、计算属性与侦听器、条件渲染、列表渲染、Class与Style绑定介绍与基本的用法
Vue框架常用知识点 文章目录 Vue框架常用知识点 知识点解释 第一个vue应用 模板语法 计算属性与侦听器 条件渲染.列表渲染.Class与Style绑定 知识点解释 vue框架知识体系 [1]基 ...
- Vue基础之Vue的模板语法
Vue基础之Vue的模板语法 数据绑定 01 数据绑定最常见的形式就是使用插值表达式(两个大括号!)[也就是小胡子语法!mustache] <body> <!-- Vue.js的应用 ...
- vue.js 常用语法总结(一)
作者:曾萍,目前就职于京东商城. 概述 2016年已经结束了.你是否会思考一下,自己在过去的一年里是否错过一些重要的东西?不用担心,我们正在回顾那些流行的趋势.通过比较过去12个月里Github所增加 ...
随机推荐
- Apache2.2安装
貌似Apache官网从2.2.X之后不再发布Windows安装版本,需要的话得自己编译 从官网下载2.2.25(我下了一个no-ssl的),安装提示 因为本机已经安装IIS,占用80端口,修改Apac ...
- ubuntu 截图工具 Shutter,设置快捷键 Ctrl+Alt+A
系统设置 键盘 快捷键 自定义快捷键
- USACO Section1.1PROB Broken Necklace
有点麻烦的一道模拟(官方题解好像有复杂度为$O(n)$DP的姿势?,感觉好烦,以后再细看~ 在一些细节上调试了很久很久,囧RZ /* ID: jusonal1 PROG: beads LANG: C+ ...
- SGU 145
节点不可重复经过的K短路问题. 思路:二分路径长度,深搜小于等于路径长度的路径数.可以利用可重复点K短路问题中的A*函数进行剪枝. 尝试另一种解法:把可重复点K短路A*直接搬过来,堆中的每个元素额外记 ...
- 美国诚实签经验——中英文行程单、往返机票、用英语面试的申请者通过率>用中文面试的申请者的通过率、一直保持着微笑,看上去很自信,也很诚恳、户口簿带上最好
在排队等待时据我的观察,用英语面试的申请者通过率>用中文面试的申请者的通过率.一家人申请通过率>单个人通过率:商务签证通过率>旅游签证通过率 一. 面签材料 1. 必备材 ...
- oracle10G 数据库名、实例名、ORACLE_SID 及创建数据库- hl3292转载修改(实践部分待校验)
数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...
- Python Matplotlib模块--pylab
#-*- coding: utf-8 -*- ''' subplot(m,n,p):其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表 ...
- bzoj 1801: [Ahoi2009]chess 中国象棋【dp】
注意到一行只能放012个炮,我们只需要知道列的状态,不用状压行 所以设f[i][j][k]表示前i行有j列有1个炮,有k列有2个炮的方案数 然后分情况讨论转移就行了 #include<cstdi ...
- Linux安装MySQL标准教程
导读: 本文主要介绍 CentOS 系统二进制安装 MySQL 5.7.23 版本的安装步骤,其他版本安装过程相似. 1.前置准备 卸载旧版MySQL 查看rpm包 rpm -qa|grep mysq ...
- 洛谷P1010 幂次方
题目描述 任何一个正整数都可以用2的幂次方表示.例如 137=2^7+2^3+2^0 同时约定方次用括号来表示,即a^b 可表示为a(b). 由此可知,137137可表示为: 2(7)+2(3)+2( ...