Vue | 04 模板语法

news/2024/7/10 3:25:46 标签: vue, frontend technology, framework

内容提要:

  • 如何在HTML中插入值(包括插入纯文本、生成原生HTML、属性绑定v-bind、JavaScript表达式的使用)
  • 指令(指令的表示方式、参数与修饰符的含义、写法、用法)
  • 速记(速记的意义、使用场景、v-bindv-on速记的写法)

Vue.js使用基于HTML的模板语法,该模板允许你将呈现的DOM绑定到Vue实例的数据之下。所有的Vue.js模板都对HTML有效,能够被遵守HTML规范的浏览器或HTML解析器解析。

在底层,Vue在虚拟DOM渲染函数里编辑模板。结合响应系统,当app的状态改变的时候,Vue能够智能的计算出最小的组件去重新渲染最终数量的DOM。

如果你熟悉虚拟DOM的原则和倾向于使用JavaScript的原生能力,你也能够直接写渲染函数 directly write render functions 来代替模板,使用可选的JSX支持。

插入值

文本

绑定文本的最基本形式是使用称为“Mustache”的两个花括号语法:

<span>Message: {{ msg }}</span>

mustache标签将会被在data对象里面与msg一致的值替换。

v-once 指令不更新data的值

使用v-once指令执行一次插入值而不再执行数据的改变,但是在这个节点上的其他绑定也会受影响。

<span v-once>This will never change: {{ msg }}</span>

原生HTML—执行HTML标签

mustache标签以纯文本的形式解释数据,而不是HTML。为了输出HTML效果,需要使用v-html指令。

<p>Using mustaches: {{ rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>

raw Html
span的内容被rawHtml属性替换,被推断为HTML-数据绑定被忽略。注意不能使用v-html来编写模板语法,因为Vue不是一个基于字符串的模板引擎。相反,组件是UI复用和组合的基本单元。

在你的网站上随意动态渲染HTML是非常危险的,因为这容易导致 XSS vulnerabilities(简单点说就是容易被其它人动态注入脚本,使程序的安全性受到影响)。仅仅使用插入值可信任的内容而不要使用用户提供的内容。

属性

双括号语法不能用在HTML属性中使用。使用v-bind指令代替。

<div v-bind:id="dynamicId"></div>

如果属性是一个布尔值,一般情况下true表示存在,v-bind稍稍有点不用,看一下这个例子:

<button v-bind:disabled="isButtonDisabled"></button>

if isButtonDisabled 的值为null,undefined or false ,disabled属性将不会被包含在渲染的元素中.即相当于没写这个属性

使用JavaScript表达式

Vue不仅仅支持以属性key键的形式在模板中的简单绑定,而且,在所有的数据绑定中,支持强大的JavaScript表达式:

{{ number + 1 }}
{{ ok? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>

以上这些表达式将被看作JavaScript。唯一的限制是每个表达式仅能包含一个单独的表达式,以下这样写是无法工作的:

<!-- this is a statement,not an expression -->
{{ var a = 1 }}

<!-- flow control won't work either,use ternary expressions -->
{{ if (ok) { return message} }}

模板表达式是被沙箱化的,仅仅能访问全局变量的白名单如:Math 和Date。用户自定义的全局变量在模板表达式里是不允许访问的。

指令

指令特指以v-为前缀的属性。指令属性的值会被看作为一个单个的JavaScript表达式(v-for除外,稍后讨论)。指令的工作任务是当它的表达式的值改变的时候,为DOM做出响应。让我们回顾一下在介绍章节里看到的例子:

<p v-if="seen">Now you see me</p>

这里,v-if指令根据表达式的值是否为真,来删除/插入

元素。

参数

一些指令可以携带“参数”,用指令后面加冒号表示。如v-bind指令用于响应HTML属性的更新:

<a v-bind:herf="url">...</a>

这里href是一个参数,它告诉v-bind指令把url表达式的值绑定到href属性。

另一个例子是v-on指令,用于监听DOM事件:

<a v-on:click="doSomething">...</a>

这里的参数是要监听的事件名称,我们还会更详细的讨论事件管理。

修饰符

修饰符是特指用点表示的后缀,这表明指令应该以某种特殊的方式绑定。例如,.prevent修饰符告诉v-on指令当事件触发的时候调用event.preventDefault():

<form v-on:submit.prevent="onSubmit">...</form>

一会你也能看到关于修饰符的其他例子,如v-onv-model,当我们探索这些功能的时候。

速记

v-可以用于识别你的模板中的Vue特指的属性。当你使用Vue.js去应用动态行为给一些存在的标记的时候,它是有用的,但频繁的使用这些指令会让人觉得有点啰嗦。这时,当你构建 SPA (single-page application: Vue.js管理每一个模板)的时候,v-前缀的写法变简单是很必要的。Vue.js为常用指令当中的两个提供了特有的速记方式:v-bindv-on:

v-bind 速记

<!-- full syntax -->
<a v-bind:href="url">...</a>
<!-- shorthand -->
<a :href="url">...</a>

v-on 速记

<!-- full syntax -->
<a v-on:click="doSomething">...</a>
<!-- shorthand -->
<a @click="doSomething">...</a>

他们看起来和正常的HTML有点不用,但@对于属性名字是有效的字符,所有支持Vue.js的浏览器都可以正确的解析它。另外,他们不会出现在最终被渲染的标记中。速记语法是可选的。


http://www.niftyadmin.cn/n/1035789.html

相关文章

通过position属性实现文本在页面中的任意位置

页面文本根据需求需要实现位置的自由设置&#xff0c;需要使用属性position来实现&#xff0c;Demo代码如下所示&#xff1a; <!doctype html> <html> <head> <meta charset"utf-8"> <title>position文本定位</title> <style…

二.自定义View 基础知识attr

知识点整理1.attr1.1 概念2.attr 作用3.attr 使用方式2.attr的简单创建3.format 数据类型具体参考4.attr 的使用前言&#xff1a;自定义view是android自定义控件的核心之一&#xff0c;那么在学习自定义view之前&#xff0c;我们先来了解下自定义view的自定义属性的attr的用法。…

一.自定义View 基础知识

知识点整理1.自定义View基础1.1 View的分类1.2 View类简介1.2.1 自定义view的基本方式1.2.2 自定义控件分类1.3 AttributeSet与自定义属性1.4 View视图结构1.5 Android坐标系1.6 Android 中颜色相关内容1.自定义View基础 1.1 View的分类 类别解释特点单一视图即一个View&…

Vue | 05 计算属性和监听器

内容提要&#xff1a; 计算属性的使用场景及表示方法 计算缓存与方法的差异 计算属性与监听器属性的使用比较 计算属性的Setter表示方法 监听器的使用方式 计算属性 在模板内写表达式是非常方便的&#xff0c;但它们仅仅能做一些简单的操作&#xff0c;把太复杂的表达式放…

Vue | 06 类和样式绑定

内容提要&#xff1a; 绑定HTML classes的语法&#xff1a;对象语法、数组语法、在组件上的使用绑定内联样式的语法&#xff1a;对象语法、数组语法、自动加前缀与多个值的使用 对于数据绑定的一种常见需要是操作元素的类列表和它的内联样式。由于它们都是属性&#xff0c;我们…

Vue | 07 条件渲染

v-if的用法详解v-show的用法v-if与v-show的用法比较v-if与v-for联合使用的建议 v-if 在字符串模板里&#xff0c;例如 Handlebars&#xff0c;我们像这样写一个条件模块&#xff1a; <!-- Handlebars template --> {{#if ok}} <h1>Yes</h1> {{/if}}在Vue我…

三.自定义View onMeasure onLayout onDraw

知识点整理1 View树的绘制流程1.1 View的添加2.1 View绘制流程1 View树的绘制流程 View树的绘制流程是谁负责的&#xff1f; view树的绘制流程是通过ViewRoot去负责绘制的&#xff0c;主要作用是View树的管理者&#xff0c;负责将DecorView和PhoneWindow“组合”起来。 View树…

Vue | 08 列表渲染

内容提要: v-for映射数组与对象的用法 key值的作用与用法 数组变化检测 3.1 数组可变方法 3.2 如何替换数组 3.3 数组index/length赋值不能响应变化的处理方法 对象无法响应变化的处理 如何显示过滤/或排序的结果 v-for与范围、template上使用v-for v-for与v-if的优先级处…