二. Vue-插值表达式与指令

插值表达式与指令

  • 插值表达式:

{{ Mustache }} 插值

如:

{{msg}}

  • 指令:

1.什么是指令:

  • 什么是自定义属性:

在html5中引入的规范化自定义属性,如abc:123,而标准属性则如color:red

  • 指令的本质就是自定义属性
  • 指令的格式:以v-开始(如v-cloak),由开发者进行设定的

2.v-cloak指令用法:

  • 插值表达式存在的问题:“闪动”:

当浏览器因为频繁刷新等原因造成卡顿时,差值表达式会存在显示花括号之后再迅速显示值的内容

  • 如何解决该问题:

解决该问题的方式,取决于vue如何解析差值表达式。使用v-cloak指令可以使vue在进行解析时,先不预先显示花括号,从而很好解决该问题

官方API的使用方法

<style type="text/css">
			[v-cloak] {
			  display: none;
			}
		</style>
<div v-cloak>
  {{ message }}
</div>
  • 解决该问题的原理:先隐藏,替换好值后再显示最终的值

3.数据绑定指令:

  • v-text:填充纯文本

相比插值表达式更加简洁,不存在“闪动”问题

<div v-cloak>{{msg}}</div>
<div v-text="msg"></div>
<!-- 这两个语句显示效果等效:
v-text相较更加简洁,用户体验更好
 -->
  • v-html:填充HTML片段,更新元素的 innerHTML。注意:内容按普通 HTML 插入 - 不会作为 Vue 模板进行编译。
data:
				{
					msg:'hello vue',
					/*用于提供数据*/
					msg1:'<h1>HTML</h1>',
				}
<div v-html="msg1"></div>

存在安全问题,在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 XSS 攻击。只在可信内容上使用 v-html,永不用在用户提交的内容上。

本网站内部数据可以使用,来自第三方的数据不可以用。

  • v-pre:填充原始信息

显示原始信息,跳过编译过程(分析编译过程)

<div v-pre>{{msg}}</div>
<!-- 跳过编译过程,直接显示源代码 -->

4.数据响应式:

  • 如何理解响应式

html5中的响应式(屏幕尺寸改变样式)

数据的响应式(数据的变化改变样式)

  • 什么是数据绑定

将数据填充到标签中,之前的数据绑定指令以及插值显示器都是响应式的,可以利用v-noce控制,从而进行性能的优化。

  • v-once只编译一次

显示内容之后,不再具有响应样式。只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

<div v-once>{{1+2+3}}</div>
<!-- 显示之后,该元素在数据台的修改无效
应用场景:显示的信息后续不需要再被修改,使用后一定程度上可以提高性能
 -->

5.双向数据绑定:

在与用户的交互过程中,用户交互过程产生的数据会影响到原本网页数据的变化

用户—-数据—-页面

  • 双向数据绑定分析:

v-model指令:绑定一个具体数据,在表单控件或者组件上创建双向绑定。如:



components

<div>
			<input type="text" v-model="msg"/>
			<!-- v-model进行数据的双向绑定,能实现同步更改数据 -->
</div>

用户改页面内容数据会变,数据更改,用户页面也会发生改变
修饰符:

#.lazy

在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转为在 change 事件_之后_进行同步:

<!-- 在“change”时而非“input”时更新 -->
<input v-model.lazy="msg">

#.number

如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符:

<input v-model.number="age" type="number">

这通常很有用,因为即使在 type=“number” 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。

#.trim

如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符:

<input v-model.trim="msg">

官方API有更深入的使用教程:v-model

  • MVVM设计思想:

最重要的思想是“分治”,即将不同功能的代码放在不同的功能模块里面,然后再通过特定方式将他们之间建立关联
在这里插入图片描述

M(MODEL):模型,用于提供数据

V(VIEW):视图,本质上来说是DOM元素,提供页面展示效果

VM(view-model):提供控制逻辑,将视图与模型结合在一起

从视图到模型数据,用的是事件监听的方式

从模型数据到视图,用的是数据绑定的方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在Vue3中,插值表达式中的换行符(\n)会被保留并输出。这意味着如果你在插值表达式中添加了换行符,那么它们会被识别并在渲染时输出到页面中。 例如,如果你有以下代码: ``` <template> <div> {{ message }} </div> </template> <script> export default { data() { return { message: 'Hello\nWorld' } } } </script> ``` 则渲染后的结果将是: ``` <div> Hello World </div> ``` 注意,这种行为只适用于单个插值表达式中的换行符。如果你在模板中使用多个插值表达式或其他语法,则可能需要使用模板字面量或其他技术来处理多个换行符。 ### 回答2: Vue3的插值表达式仍然可以识别,与Vue2相比,在Vue3中插值表达式的语法没有发生重大变化。插值表达式可以用于将数据动态绑定到HTML模板中。 在Vue3中,插值表达式仍然使用双大括号"{{}}"来包裹表达式。在HTML模板中,可以在双大括号内部写入JavaScript表达式,用于动态生成HTML内容。Vue会根据表达式的值自动更新DOM。 例如,在Vue3的模板中可以使用插值表达式来显示一个变量的值: ```html <div> {{ message }} </div> ``` 上述代码中,双大括号中的"message"是一个变量,它会被动态地替换为其对应的值,并显示在div元素中。 同时,插值表达式也支持JavaScript表达式的使用,可以在插值表达式中进行计算或者调用方法: ```html <div> {{ count + 1 }} </div> <div> {{ getName() }} </div> ``` 上述代码中,第一个插值表达式用于计算count加1的结果,并将结果显示在div元素中。第插值表达式调用了一个名为getName的方法,并将其返回值显示在div元素中。 综上所述,Vue3的插值表达式仍然可以识别,并且可以通过双大括号在HTML模板中动态地绑定数据和执行JavaScript表达式。 ### 回答3: Vue 3中的插值表达式在一定程度上有所变化。与Vue 2不同,Vue 3中的插值表达式不再支持多行文本。也就是说,在插值表达式中使用/n是不会被识别和渲染的。 Vue 3的插值表达式仍然使用双大括号{{}}包裹要求处理的数据。但与Vue 2不同的是,插值表达式中不能跨越多行。如果在插值表达式中使用了/n,Vue 3会将其视为纯文本,并不会将其解析为换行符。 要在Vue 3中实现多行文本的渲染,可以使用<p>、<div>等HTML元素结构,或者使用v-html指令进行渲染。例如,可以在组件中定义一个data属性,存储包含换行符的文本,然后使用v-html指令将其渲染为HTML。 总结而言,Vue 3的插值表达式不支持识别/n,如果需要实现多行文本渲染,可以使用其他方式如HTML元素结构或者v-html指令来处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值