怎么理解Vue中的模板语法插值和指令
本篇内容主要讲解“怎么理解Vue中的模板语法插值和指令”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Vue中的模板语法插值和指令”吧!
Vue有很多模板语法特别好用,就是在HTML中写一些Vue定义的一些模板语法,可以快速的展现数据,绑定方法等。这也就是Vue上手很快的原因之一。
1. 模板的理解我们先来理解理解什么是模板?
我们先来理解理解什么是模板?
模板就是动态html页面,这里面包含了一些js语法代码
Vue的模板语法分为两种,分别是:
【插值语法】双大括号表达式 (“Mustache”语法)【一个】
【指令语法】指令(以v-开头的自定义标签属性)【很多】
插值语法:
功能:用于解析标签体内容,向页面输出数据
写法:
{{xxx}}
,xxx是js表达式,且可以直接读取到data中的所有属性,可以调用对象的方法备注:里面写js表达式:有返回值的js代码,而不是js语句
指令语法:
功能:用于解析标签(包括:标签属性、标签体内容、绑定事件.....)
举例:
v-bind:href="xxx"
或 简写为:href="xxx"
,xxx同样要写js表达式,且可以直接读取到data中的所有属性备注:Vue中有很多的指令,且形式都是:
v-????
下面我们来介绍几个常用的指令语法。
2. 指令语法:强制数据绑定 v-bind:
功能:指定变化的属性值
功能:指定变化的属性值
完整写法
v-bind:xxx='yyy' // yyy会作为表达式解析执行
简洁写法
:xxx='yyy'
单向数据绑定
语法:
v-bind:href ="xxx"
或简写为:href ="xxx"
特点:数据只能从 data 流向页面
双向数据绑定 指令 v-model
语法:
v-mode:value="xxx"
或简写为v-model="xxx"
特点:数据不仅能从 data 流向页面,还能从页面流向 data
3. 指令语法:绑定事件监听 v-on:
功能:绑定指定事件名的回调函数
功能:绑定指定事件名的回调函数
完整写法
v-on:click='xxx'v-on:keyup='xxx(参数)'v-on:keyup.enter='xxx'
简洁写法
@click='xxx'@keyup='xxx'@keyup.enter='xxx'
4. v-text与v-html
v-text
作用:向其所在的节点中渲染文本内容。
与插值语法的区别:
v-text
会替换掉节点中的内容,{{xx}}
则不会。
v-html
作用:向指定节点中渲染包含html结构的内容。
与插值语法的区别:
(1).
v-html
会替换掉节点中所有的内容,{{xx}}
则不会。(2).
v-html
可以识别html结构。
严重注意:v-html
有安全性问题!!!!
(1). 在网站上动态渲染任意HTML是非常危险的,容易导致XSS攻击。
(2). 一定要在可信的内容上使用
v-html
,永不要用在用户提交的内容上!
<body> <div id='app'> <h3>1. 大括号表达式</h3> <p>{{msg}}</p> <!--textContent --> <p>{{msg.toUpperCase()}}</p> <p v-html="msg"></p> <!--innerHTML --> <p v-text="msg"></p> <!--textContent --> <p v-text="msg.toUpperCase()"></p> <h3>2. 指令一: 强制数据绑定</h3> <img class="lazy" data-src="imgUrl" alt="Vue"> <!--无法显示图片,没有识别成js表达式 --> <img v-bind:class="lazy" data-src="imgUrl" alt="Vue"> <!--属性值识别成js表达式 --> <img :class="lazy" data-src="imgUrl" alt="Vue"> <h3>3. 指令二: 绑定事件监听</h3> <button v-on:click="test1">test1</button> <button @click="test1">test1</button> <button @click="test2('abc')">test2</button> <!--可以传参数 --> <button @click="test2(msg)">test2</button> </div> <script class="lazy" data-src="../js/vue.js"></script> <script> new Vue({ el: '#app', data: { msg: '<a href="http:www.baidu.com">I Will Back!</a>', imgUrl: "https://cn.vuejs.org/images/logo.png" }, methods: { test1() { alert('heheh'); }, test2(content){ alert(content); } } }) </script></body>
5. 条件渲染指令移除标签删除
v-if
v-else
移除标签删除
v-if
v-else
写法:
v-if="表达式"
v-else-if="表达式"
v-else="表达式"
适用于:切换频率较低的场景。特点:不展示的DOM元素直接被移除。注意:v-if可以和:v-else-if、v-else一起使用,但要求结构不能被“打断”。
添加样式隐藏(display: none)
v-show
写法:v-show="表达式"
适用于:切换频率较高的场景。特点:不展示的DOM元素未被移除,仅仅是使用样式隐藏掉
【备注】使用v-if的时候,元素可能无法获取到,而使用v-show一定可以获取到。
比较v-if与v-show
v-if
是控制元素是否加载到页面上(有性能开销) v-show
是控制元素的显示与隐藏 (初始创建时加载一次)
如果需要频繁切换 v-show 较好
当条件不成立时, v-if 的所有子节点不会解析
<body> <div id="demo"> <p v-if="ok">成功了</p> <!-- 移除标签删除 --> <p v-else>失败了</p> <p v-show="ok">又成功了</p> <!-- 添加样式隐藏 --> <p v-show="!ok">又失败了</p> <button @click="ok = !ok">切换</button> </div> <script class="lazy" data-src="../js/vue.js"></script> <script> new Vue({ el: '#demo', data: { ok: false, } }) </script></body>
6. 总结
一些常用的指令
v-text
: 更新元素的 textContentv-html
: 更新元素的 innerHTMLv-if
: 如果为true, 当前标签才会输出到页面v-else
: 如果为false, 当前标签才会输出到页面v-show
: 通过控制display样式来控制显示/隐藏v-for
: 遍历数组/对象v-on
: 绑定事件监听, 一般简写为@v-bind
: 强制绑定解析表达式, 可以省略v-bindv-model
: 双向数据绑定ref
: 为某个元素注册一个唯一标识, vue对象通过$refs属性访问这个元素对象v-cloak
: 使用它防止闪现表达式, 与css配合: [v-cloak] { display: none }
到此,相信大家对“怎么理解Vue中的模板语法插值和指令”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341