Vue初体验——了解属性和指令

Vue

  • Vue.js 是一个用于构建用户界面的渐进式框架。它提供了多种属性和指令,以帮助开发者更高效地管理和渲染数据。下面我们将深入探讨一些核心的Vue指令和属性的用法。

以下是Vue中常用的指令和属性

1. v-model - 双向数据绑定

v-model 是Vue中的一个非常重要的指令,用于在表单控件(如<input><textarea><select>)上创建双向数据绑定。这意味着当数据变化时,DOM会被更新;同时,当DOM变化时,数据也会被同步更新。

Html 复制代码
<input type="text" v-model="msg">

在这个例子中,msg数据属性会随着输入框内容的变化而实时更新。

2. @click - 事件监听器

@click(或等价的v-on:click)是一个用于监听点击事件的指令。你可以将它绑定到任何HTML元素上,并在触发点击事件时执行指定的方法。

Html 复制代码
<h2 @click="handle">{{msg}}</h2>

这里的handle方法将在<h2>标签被点击时调用。

3. ref - 访问子组件实例

ref是一个特殊的属性,可以用来获取组件实例或DOM元素的引用。在组合API中,ref通常与reactiveref函数一起使用。

Javascript 复制代码
const msg = ref('hello');

4. v-if vs v-show

  • v-ifv-show 都可以控制元素的显示和隐藏,但它们的工作方式不同。
  • v-if 是条件渲染,它会根据表达式的真假来判断是否将DOM插入到真实DOM树中。
  • v-show 则始终保留DOM元素,并通过CSS属性(如display: none)来控制元素的可见性。
Html 复制代码
<!-- 使用v-if -->
<h3 v-if="count<30">happy</h3>

<!-- 使用v-show -->
<h4 v-show="count<30">我很开心</h4>

5. v-for - 列表渲染

v-for指令用于基于数据集合来渲染列表。它可以遍历数组、对象或计算属性的结果。

Html 复制代码
<li v-for="(item, index) in list" :key="item.id">{{ index + 1 }}-{{ item.name }}</li>

这里,list是一个包含多个项目的数组,每个项目都有一个idname属性。

6. v-textv-html

  • v-text 将数据插入到DOM中,但会确保插入的内容被转义,防止XSS攻击。
  • v-html 则将数据作为HTML插入,不会进行转义,这可以用于动态生成HTML,但需要小心处理,以防安全问题。
Html 复制代码
<div v-text="msg2"></div>
<div v-html="msg3"></div>

@click的实例

  • 下面是对@click的实际用法
html 复制代码
template>
    <h2>{{ tem }}</h2>
    <h5>{{ suggest }}</h5>
    <button @click="add">+1</button>
    <button @click="minus">-1</button>
</template>

<script setup>
import { ref,watch,computed } from 'vue'

let tem = ref(20)

const add = () => {
    tem.value+=5
}
const minus = () => {
    tem.value-=5
}

const suggest = computed(()=>{
    if(tem.value>=30){
        return'短袖'
    }else if(tem.value>=20){
        return'夹克'
    }else if(tem.value>=10) {
        return'棉袄'
    }else {
        return '棉袄'
    }
})
</script>

<style lang="css" scoped>

</style>

代码解读

Html 复制代码
<template>
    <h2>{{ tem }}</h2>
    <h5>{{ suggest }}</h5>
    <button @click="add">+1</button>
    <button @click="minus">-1</button>
</template>
  • <h2>{{ tem }}</h2> 显示当前温度。
  • <h5>{{ suggest }}</h5> 根据温度显示推荐的穿着。
  • <button @click="add">+1</button><button @click="minus">-1</button> 分别用于增加和减少温度值。
Javascript 复制代码
import { ref, watch, computed } from 'vue'

let tem = ref(20)

const add = () => {
    tem.value += 5
}
const minus = () => {
    tem.value -= 5
}

const suggest = computed(() => {
    if (tem.value >= 30) {
        return '短袖'
    } else if (tem.value >= 20) {
        return '夹克'
    } else if (tem.value >= 10) {
        return '棉袄'
    } else {
        return '棉袄'
    }
})
  • tem 是一个使用ref创建的响应式变量,初始化为20。
  • addminus 方法用于修改tem的值,分别增加或减少5度。
  • suggest 是一个computed属性,根据tem的值返回不同的着装建议。由于computed属性具有缓存机制,所以当tem改变时,suggest会自动重新计算并更新。
  • computed 默认会主动执行一次,当回调中任意变量值变更时,computed都会重新执行

应用逻辑

当用户点击"+1"按钮时,温度增加5度;点击"-1"按钮时,温度降低5度。suggest计算属性则会根据当前温度的范围,返回相应的着装建议。

  • 10度
  • 25度
  • 50度

结语

这个实例展示了Vue.js如何通过组合API(基于Composition API)进行状态管理和逻辑处理。使用refcomputed,我们可以创建响应式的数据模型和基于状态的动态内容,同时利用事件处理方法实现用户交互。这种模式使代码更加清晰和模块化,易于理解和维护。

相关推荐
林太白3 分钟前
rust15-菜单模块
后端·rust
那些免费的砖3 分钟前
Reka UI - 一款免费开源的 Vue 无头 UI 组件库,样式定制开发项目的绝佳选择
vue.js·ui·开源
调试人生的显微镜11 分钟前
iOS 上架费用全解析 开发者账号、App 审核、工具使用与开心上架(Appuploader)免 Mac 成本优化指南
后端
LSTM9713 分钟前
使用 Spire.XLS for Python 将 Excel 转换为 PDF
后端
ACGkaka_13 分钟前
SpringBoot 实战(四十)集成 Statemachine
java·spring boot·后端
Java微观世界23 分钟前
Lombok、SpringBoot的底层逻辑:一文读懂Java注解的编译时与运行时处理
后端
考虑考虑26 分钟前
Ubuntu服务器使用 Graphics2D 生成图片时出现文字乱码
运维·服务器·后端
im_AMBER31 分钟前
React 12
前端·javascript·笔记·学习·react.js·前端框架
开开心心就好31 分钟前
电脑音质提升:杜比全景声安装详细教程
java·开发语言·前端·数据库·电脑·ruby·1024程序员节