vue入门:(模板语法与指令)
vuejs使用及HTML的模板语法,可以实现声明式将DOM绑定至底层VUE实例的数据。通过模板语法将数据渲染进DOM的系统,结合响应系统,在应用状态改变时,Vue能够计算出重新渲染组件的最小代价并应用到DOM操作上。
VUE的模板语法的内容包括:插值、指令。
插值包括:文本插值、原始HTML插值、特性插值、以及使用javascript表达式实现插值。
指令:参数、动态参数、修饰符。
缩写形式是指v-bind和v-on指定可以采用缩写形式:'v-bind:'-->‘:’、'v-on'-->'@'。
一、vue模板语法之插值
- 文本插值
- 原始HTML插值
- 特性插值
- javascript表达式实现插值
1.1文本插值:{{}}
<div id="user">{{userName}}</div>
<script>
new Vue({
el:'#user',
data:{
userName:'他乡踏雪'
}
});
</script>
渲染结果:
<div id="user">他乡踏雪</div>
单次绑定:v-once
v-once单次渲染指令,只渲染元素和组件一次,随后的重新渲染,元素/组件及所有的子节点将被视为静态并跳过。这可以用于优化性能。
<!--v-once单次渲染-->
<span v-once>{{sex}}</span>
1.2原始HTML插值:v-html、v-text
<div id="user" v-html="dataHtml"></div>
<script>
new Vue({
el:'#user',
data:{
userName:'他乡踏雪',
dataHtml:'<div><span>昵称:</span><span>他乡踏雪</span></div><div><span>职业:</span><span>前端开发工程师</span></div>'
}
});
</script>
渲染结果:
<div id="user">
<div>
<span>昵称:</span>
<span>他乡踏雪</span>
</div>
<div>
<span>职业:</span>
<span>前端开发工程师</span>
</div>
</div>
这里的v-html和v-text同等与element.innerHTML和element.innerText的效果。但是这两个指令不能复合局部模板,就是说不能在数据中再插入模板语法,比如“<span>{{userName}}</span>”这个段v-html数据中的复合插入userName不会生效(v-text一样不生效)。
在vue官方文档中提到,需要谨慎使用v-html指令,不要对用户提供的内容执行v-html指令,因为很容易引发XSS攻击。
1.3特性插值:v-bind指令以及简写
<div id="user" v-bind:class="className">{{userName}}</div>
<script>
new Vue({
el:'#user',
data:{
userName:'他乡踏雪',
className:'userWarpper aaa'
}
});
</script>
渲染结果:
<div id="user" class="userWarrper">他乡踏雪</div>
v-bind可以省略不写,比如示例中的代码可以写成:class="userName",关于元素特性插值需要重点关注的是比如class多个值怎么插入,又比如style行间的样式特性值又怎么插入。这一块是个独立的内容,后面独立分析。
1.4JavaScript表达式实现插值
<div id="user">{{userName + '~丹'}}</div>
<script>
new Vue({
el:'#user',
data:{
userName:'他乡踏雪'
}
});
</script>
渲染结果:
<div id="user">他乡踏雪~丹</div>
这里说的JavaScript表达式插值不是说在js代码中,而是可以将js表达式插入到HTML中,这些表达式会在所属vue实例的数据作用域下被识别作为javascript被解析,但是只能包含单个表达式,所以下面的例子不会生效:
<!--这样的JavaScript表达式不会生效-->
<div>{{var userName = "他乡踏雪"}}</div>
<div>{{if(true){ return message }}}</div>
所以注意,三目运算可以有效执行,链式调用方法可以有效执行。
//可以被有效执行
{{ true ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
二、指令之参数与修饰符
- 参数
- 动态参数
- 修饰符
vuejs内置指令集:https://cn.vuejs.org/v2/api/#%E6%8C%87%E4%BB%A4
<a id="vueLink" v-bind:href="url">VUE</a>
<script>
new Vue({
el:'#vueLink',
data:{
url:'https://cn.vuejs.org/'
}
});
</script>
这部分暂时不关注渲染结果,这里我们需要关注指令表达式的结构,例如:v-bind:href="url"。v-bind可以响应式的更新HTML特性,再表达式中的url随这个数据的更新迭代,与数据绑定的DOM实体就会更新特性的属性值,通常这个数据在指令表达式中被称为“参数”。
<a id="vueLink" v-bind:[h]="url">VUE</a>
<script>
new Vue({
el:'#vueLink',
data:{
h:'href',
url:'https://cn.vuejs.org/'
}
});
</script>
从上一个示例到这个示例唯一发生改变的就是HTML特性href被[h]替换了,这个就是“动态参数”,也就是说在指令表达式中,指令的特性是可配置的,这个指令特性除了可以配置,同样事件指令v-on也是可以配置的,例如:
<a id="vuebut" v-on:[eventname]="changeName">点击输出:{{userName}}</a>
<script>
new Vue({
el:'#vuebut',
data:{
userName:'他乡踏雪',
eventname:'click'
},
methods:{
changeName(){
console.log("他乡踏雪");
}
}
});
动态参数使用起来比较的简单,但是需要注意的是动态参数不能使用大写字母,这个小问题一定注意,我刚刚学习使用vue时被这个问题困扰好久,网上的文档都没有相关解答,或许是因为这不是一个标准写法,所以大家在开发中还是严格按照规范的开发文档来实现避免错误。
然后就是关于修饰,先来看一个示例:
<div onclick="changeName()">
<a id="vuebut" v-on:[eventname].stop="changeName">点击输出:{{userName}}</a>
</div> <script>
new Vue({
el:'#vuebut',
data:{
userName:'他乡踏雪',
eventname:'click'
},
methods:{
changeName(){
console.log("他乡踏雪");
}
}
});
function changeName(){
console.log("我是div");
}
</script>
通过添加在指令表达式上添加stop修饰符,div上的点击事件就不会被触发,实现了阻止冒泡,同等与jQuery中的event.stopPropagation()方法。关于指令修饰符还有很多不同的修饰符,在后面的相关内容中再详细解析。
所谓指令修饰符就是在指令属性后面添加一个后缀,应用指令用于特殊绑定。
vue入门:(模板语法与指令)的更多相关文章
- 第六篇:vue.js模板语法(,属性,指令,参数)
Vue.js 的核心是一个允许你采用简洁的模板语法来声明式的将数据渲染进 DOM 的系统. 结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上.( ...
- vue基础---模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...
- Vue.js 模板语法
本章节将详细介绍 Vue.js 模板语法,如果对 HTML +Css +JavaScript 有一定的了解,学习起来将信手拈来. Vue.js 使用了基于 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(2)-模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据.所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解 ...
- Vue常用模板语法
常用模板语法 本篇将在上一篇的基础上记录文本渲染.表达式.过滤器以及常用指令的简单用法. 一.文本渲染 Vue支持动态渲染文本,即在修改属性的同时,实时渲染文本内容.同时为了提高渲染效率,也支持只 ...
- vue基础——模板语法
模板语法介绍 Vue.js使用了基于HTML的模板语法,允许开发者声明式地将dom绑定至底层Vue实例的数据.所有Vue.js的模板都是合法的HTML,所以能被遵循规范的浏览器和HTML解析器解析. ...
随机推荐
- hibernate一对一映射
package loaderman.c_one2one; // 身份证 public class IdCard { // 身份证号(主键) private String cardNum;// 对象唯一 ...
- Flask+uwsgi+Nginx+Ubuntu部署教程
学习 Flask,写完一个 Flask 应用需要部署的时候,就想着折腾自己的服务器.根据搜索的教程照做,对于原理一知半解,磕磕碰碰,只要运行起来了,谢天谢地然后不再折腾了,到下一次还需要部署时,这样的 ...
- DPDK 网络加速在 NFV 中的应用
目录 文章目录 目录 前文列表 传统内核协议栈的数据转发性能瓶颈是什么? DPDK DPDK 基本技术 DPDK 架构 DPDK 核心组件 应用 NUMA 亲和性技术减少跨 NUMA 内存访问 应用 ...
- Python异步IO之协程(一):从yield from到async的使用
引言:协程(coroutine)是Python中一直较为难理解的知识,但其在多任务协作中体现的效率又极为的突出.众所周知,Python中执行多任务还可以通过多进程或一个进程中的多线程来执行,但两者之中 ...
- 数据结构之AVL
简介: 一棵AVL树有如下必要条件: 条件一:它必须是二叉查找树.(左<根<右) 条件二:每个节点的左子树和右子树的高度差至多为1. AVL相关概念: 平衡因子:将二叉树上节点的左子树高度 ...
- 自动化部署 jenkins 插件简介
一.什么是持续集成? (1)Continuous integration(CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也就意味着每天可能会发生多次集 ...
- Hadoop、Hbase —— 服务启动、验证、停止
一.Hadoop 1.启动Hadoop cd /usr/local/hadoop-2.7.3/sbin ./start-dfs.sh 启动过程如下: 2.验证Hadoop是否启动成功 2.1.在主节 ...
- .NET下的对称加密算法
1.关于.NET下的对称加密算法. .NET Framework类库提供了对称加密.散列函数.非对称加密.数字签名等现有的主流加密算法..NET中默认实现了4种对称加密算法:DES.Triple ...
- AES加密解密 加密解密使用
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Sec ...
- Windows 10 删除资源管理器中7个文件夹
Windows 10 安装完成之后 ,在资源管理器中会存在 7 个文件夹,他们分别是:图片.视频.下载.音乐.桌面.文档.3D对象. 我们可以通过修改注册表的方式,隐藏这7个文件夹.相关注册表内容如下 ...