Vue基础+Vue3新特性

模板语法

文本

数据绑定最常见的形式就是使用“Mustache” (双大括号) 语法的文本插值

<span>Message: {
  { msg }}</span>
export default {
   
  name: 'HelloWorld',
  data(){
   
    return{
   
      msg:"消息提示"
   }
 }
}

原始HTML

双大括号会将数据解释为普通文本,而非 HTML 代码。为了输出真正的 HTML,你需要使用 v-html 指令

<p>Using mustaches: {
  { rawHtml }}</p>
<p>Using v-html directive: <span v-html="rawHtml"></span></p>
data(){
   
    return{
   
        rawHtml:"<a href='https://www.itbaizhan.com'>百战</a>"
   }
}

属性Attribute

Mustache 语法不能在 HTML 属性中使用,然而,可以使用 v-bind指令

<div v-bind:id="dynamicId"></div>
data(){
   
    return{
   
        dynamicId:1001
   }
}

v-bind: 可以简写成 :

使用 JavaScript 表达式

在我们的模板中,我们一直都只绑定简单的 property 键值,Vue.js都提供了完全的 JavaScript 表达式支持

{
   {
    number + 1 }}
{
   {
    ok ? 'YES' : 'NO' }}
{
   {
    message.split('').reverse().join('') }}

有个限制就是,每个绑定都只能包含单个表达式

<!-- 这是语句,不是表达式:-->
{
   {
    var a = 1 }}
<!-- 流程控制也不会生效,请使用三元表达式 -->
{
   {
    if (ok) {
    return message } }}

条件渲染

v-if

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true 值的时候被渲染。

<p v-if="flag">我是孙猴子</p>
data(){
   
    return{
   
         flag: true
   }
}

v-else

你可以使用 v-else 指令来表示 v-if 的“else 块”

<p v-if="flag">我是孙猴子</p>
<p v-else>你是傻猴子</p>
data(){
   
    return{
   
         flag: true
   }
}

v-show

另一个用于条件性展示元素的选项是 v-show 指令

<h1 v-show="ok">Hello!</h1>

v-if vs v-show 的区别

v-if 是“真正”的条件渲染,因为它会确保在切换过程中,条件块内的事件监听器和子组件适当地被销毁和重建。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

相比之下, v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说, v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好

列表渲染

用 v-for 把一个数组映射为一组元素

我们可以用 v-for 指令基于一个数组来渲染一个列表。 v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而item 则是被迭代的数组元素的别名

<ul>
    <li v-for="item in items">{
  { item.message}}</li>
</ul>
data() {
   
    return {
   
        items: [{
    message: 'Foo' }, {
   message: 'Bar' }]
   }
}

维护状态
当 Vue 正在更新使用 v-for 渲染的元素列表时,它默认使用“就地更新”的策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序,而是就地更新每个元素,并且确保它们在每个索引位置正确渲染。

为了给 Vue 一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一的 key attribute:

<div v-for
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值