热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Vue】模板语法——表达式、插值、指令

简介模板语法大家多少都有所接触,例如百度模板引擎、ejs等等同样Vue.js也使用了基于HTML的模板语法,允许开发者声明式地将DOM绑定至底层Vu
简介

模板语法大家多少都有所接触,例如百度模板引擎、ejs 等等

同样 Vue.js 也使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据

所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析,通俗的讲 Vue 模板语法就是在使用 Vue.js 开发时,你可以写在 HTML 元素上的操作语法,让你开发更高效,例如:绑定样式,循环出元素列表等

表达式

在前端的发展历程中,为了提高开发效率,诞生了很多模板引擎,方便渲染元素或者绑定数据,很多引擎模板都采用 {{双大括号表达式}} 的语法进行插值

同样 Vue.js 也借鉴了Angular.js 的双花括号的方式,进行向页面输出数据和调用对象方法。让我们感受一下双大括号表达式.

DOCTYPE html>
<html lang&#61;"en"><head><meta charset&#61;"UTF-8"><title>模板语法title><script src&#61;"https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js">script>head><body><div id&#61;"app"><p>name:<input type&#61;"text" v-model&#61;"name">p><p>webSite:<input type&#61;"text" v-model&#61;"webSite">p><p>name: {{ name }}p>webSite: <a :href&#61;"webSite">{{ webSite }}a>div><script>new Vue({el: "#app",data: {name: "",webSite: ""}})script>body>
html>

双大括号中的 {{name}}和{{webSite}}&#xff0c;绑定至底层 Vue 实例的数据&#xff0c;在浏览器中就被渲染成实例 data 选项中的值。

image-20211129133155909

image-20211129133559781





插值

文本

通过使用 v-once 指令你也能执行一次性地插值&#xff0c;当数据 改变时&#xff0c;插值处的内容 不会更新。但是你需要注意一下&#xff0c;该元素节点下面其他数据的绑定&#xff0c;数据改变&#xff0c;内容也不会更新

<p>name: {{ name }}p>

修改

<p v-once>name: {{ name }}p>

你可以发现此时数据并没有和加了v-once的标签进行动态绑定

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VO7wp6NJ-1638169143370)(https://blog-img.uiuing.com/notes/images/202111291339938.png)]

HTML

此外, vue还支持对Html进行渲染, 添加指令v-html

DOCTYPE html>
<html lang&#61;"en"><head><meta charset&#61;"UTF-8"><title>模板语法title><script src&#61;"https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js">script>head><body><div id&#61;"app"><p><input type&#61;"text" v-model&#61;"htmlData">p><p v-html&#61;"htmlData">p>div><script>let vm &#61; new Vue({el: "#app",data: {htmlData: "",}})script>body>
html>

image-20211129134815164

特性

双大括号语法不能作用在 HTML 特性&#xff08;标签属性&#xff09;上&#xff0c;需要对标签属性操作&#xff0c;应该使用 v-bind 指令, 也可以缩写为:, 这仅限于 v-bind 指令

DOCTYPE html>
<html lang&#61;"en"><head><meta charset&#61;"UTF-8"><title>模板语法title><script src&#61;"https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js">script>head><body><div id&#61;"app"><input type&#61;"checkbox" :checked&#61;"isChecked"/>div><script>let vm &#61; new Vue({el: "#app",data: {isChecked: false}})script>body>
html>

image-20211129135458755

image-20211129135510413

你也可以试试:class, 它的语法比较特殊, 类似键值对, 布尔值的value决定了String类型的Key是否显示

DOCTYPE html>
<html lang&#61;"en"><head><meta charset&#61;"UTF-8"><title>模板语法title><script src&#61;"https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js">script><style>.MagnifyText {font-size: 32px;font-weight: bold;}style>head><body><div id&#61;"app"><input type&#61;"checkbox" :checked&#61;"isChecked"/><span v-bind:class&#61;"{&#39;MagnifyText&#39;: fontResult}">uiuspan><span :class&#61;"{&#39;MagnifyText&#39;: !fontResult}">uiuspan>div><script>let vm &#61; new Vue({el: "#app",data: {isChecked: false,nameStyle: "MagnifyWords",fontResult: true}})script>body>
html>

image-20211129141029932

Javascript 表达式

对于所有的数据绑定&#xff0c;Vue.js 都提供了完全的 Javascript 表达式支持

DOCTYPE html>
<html lang&#61;"en"><head><meta charset&#61;"UTF-8"><title>模板语法title><script src&#61;"https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js">script>head><body><div id&#61;"app"><p>1 &#43; 1 &#61; {{ 1 &#43; 1 }}p><p>{{ strReverse }} 反转&#xff1a;{{ strReverse.split("").reverse().join("") }}p>div><script>let vm &#61; new Vue({el: "#app",data: {strReverse: "abc"}})script>body>
html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lkK2m3xy-1638169143376)(https://blog-img.uiuing.com/notes/images/202111291432728.png)]





指令

指令 (Directives) 是带有 v- 前缀的特殊特性。

参数

一些指令能够接收一个“参数”&#xff0c;在指令名称之后以冒号表示。

v-bind 指令可以用于响应式地更新 HTML 特性

例如第一次出现的

<a :href&#61;"webSite">{{ webSite }}a>

v-on 指令&#xff0c;用于监听 DOM 事件

例如点击事件

DOCTYPE html>
<html lang&#61;"en"><head><meta charset&#61;"UTF-8"><title>模板语法title><script src&#61;"https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js">script>head><body><div id&#61;"app"><h1>{{ strTest }}h1><button v-on:click&#61;"strReverse">反转button>div><script>let vm &#61; new Vue({el: "#app",data: {strTest: "abc"},methods: {strReverse: function () {this.strTest &#61; this.strTest.split(&#39;&#39;).reverse().join(&#39;&#39;);}}})script>body>
html>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s1wv2xpj-1638169143378)(https://blog-img.uiuing.com/notes/images/202111291443568.png)]

image-20211129144349796

动态参数

上面属性或者事件我们都是写死的&#xff0c;其实在 Vue 它也可以是动态的。

DOCTYPE html>
<html lang&#61;"en"><head><meta charset&#61;"UTF-8"><title>模板语法title><script src&#61;"https://cdn.bootcdn.net/ajax/libs/vue/2.6.9/vue.js">script>head><body><div id&#61;"app"><h1>{{ strTest }}h1><button v-on:[dp]&#61;"strReverse">反转button>div><script>let vm &#61; new Vue({el: "#app",data: {strTest: "abc",dp: "click"},methods: {strReverse: function () {this.strTest &#61; this.strTest.split(&#39;&#39;).reverse().join(&#39;&#39;);}}})script>body>
html>

效果是一样的, 点击按钮时会触发事件回调

修饰符

修饰符是以半角句号 . 指明的特殊后缀&#xff0c;用于指出一个指令应该以特殊方式绑定&#xff0c;大致分为三类&#xff1a;

  • 事件修饰符
  • 按键修饰符
  • 系统修饰符

例如&#xff0c;事件修饰符中的.prevent修饰符和原生 event.preventDefault() 效果一样&#xff0c;可以阻止事件默认行为&#xff0c;在表单中点击提交按钮&#xff0c;就会发生页面跳转&#xff0c;但是使用了 .prevent 就不会发生跳转





指令缩写

v-bind

前面有提到过 v-bind ,可以直接简写为:

<a :href&#61;"https://uiuing.com">bloga>

其他属性也可以简写

v-on

v-bind 有一些差异&#xff0c;v-on: 使用 &#64;简写

<button &#64;click&#61;"strReverse">反转button>


推荐阅读
  • 点击后defaultEducation的值明明改变了,但props传给子组件却watch不到 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • 关于extjs开发实战pdf的信息
    本文目录一览:1、extjs实用开发指南2、本 ... [详细]
  • 1.移除consol.log()的babel插件安装:npmibabel-plugin-transform-remove-console-D配置:babel.config.js:这 ... [详细]
  • document .ready中的函数怎么被按钮调用? ... [详细]
author-avatar
小岳不在家
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有