Vue前端开发2.2 数据绑定

文章目录

  • 一、初识数据绑定
    • (一)数据绑定概述
    • (二)数据绑定构成
      • 1、定义数据
      • 2、输出数据
    • (三)数据绑定案例演示
      • 1、创建单文件组件
      • 2、切换页面显示组件
    • (四)将Vue引入HTML页面中
      • 1、概述
      • 2、演示
        • (1)创建网页
        • (2)导入Vue 3框架
        • (3)编写页面代码
        • (4)编写脚本代码
        • (5)查看网页
  • 二、响应式数据绑定
    • (一)响应式数据绑定概述
    • (二)使用ref()函数
      • 1、定义
      • 2、语法
      • 3、演示
    • (三)使用reactive()函数
      • 1、定义
      • 2、语法
      • 3、演示
    • (四)使用toRef()函数
      • 1、定义
      • 2、语法
      • 3、演示
    • (五)使用toRefs()函数
      • 1、定义
      • 2、语法
      • 3、演示
    • (六)课堂练习 - 实现轮播图
      • 1、创建单文件组件
      • 2、切换页面显示组件
      • 3、查看轮播图效果
  • 三、实战总结

在这里插入图片描述

一、初识数据绑定

(一)数据绑定概述

欢迎大家加入今天的Vue前端开发实战讲稿。在今天的课程中,我们将深入探讨Vue中的数据绑定功能。数据绑定是Vue的核心特性之一,它使得数据和视图之间的同步变得简单而高效。通过数据绑定,我们可以将页面中的数据分离出来,放到组件的<script>标签中,实现数据驱动视图的效果。

(二)数据绑定构成

1、定义数据

在实现数据显示之前,我们需要在<script>标签中定义组件所需的数据。Vue 3提供了setup函数和<script setup>语法糖,使得数据定义更加简洁。

语法格式:

<script>
export default {setup() {return {数据名: 数据值,……}}
}
</script>

使用setup语法糖:

<script setup>
const 数据名 = 数据值
</script>

2、输出数据

Vue提供了Mustache语法(双大括号语法),用于将数据输出到页面中。

语法格式:

{{数据名}}

示例代码:

<template><div>{{ message }}</div>
</template>

(三)数据绑定案例演示

1、创建单文件组件

我们将通过一个简单的例子来演示数据绑定的效果。首先,在components目录下创建一个名为Message.vue的单文件组件。

代码示例:

<template><div class="box">{{ message }}</div>
</template><script setup>
const message = "泸职院欢迎您~"
</script><style>
.box {margin-top: 30px;text-align: center;font-size: 35px;font-family: 仿宋;font-weight: bold;color: red;
}
</style>

2、切换页面显示组件

接下来,我们需要将这个组件导入到主应用中,并在本地服务器上查看数据绑定的效果。

(四)将Vue引入HTML页面中

1、概述

除了通过Vite创建项目,Vue还支持直接将Vue引入HTML页面中。这种方式虽然只能使用Vue的核心功能,但非常适合开发一些简单的页面。

2、演示

(1)创建网页

创建一个名为data_binding.html的网页

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>演示Vue 3数据绑定</title> 
</head>
<body>      
</body>
</html>
(2)导入Vue 3框架
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>演示Vue 3数据绑定</title><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>  
</head>
<body>    
</body>
</html>
(3)编写页面代码
<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>演示Vue 3数据绑定</title><!-- 导入Vue 3框架 --><script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><style>#app {margin-top: 30px;text-align: center;font-size: 35px;font-family: 隶书;font-weight: bold;color: blue;}</style></head><body><div id="app">{{ message }}</div>        </body>
</html>
(4)编写脚本代码

创建一个Vue实例,并挂载到DOM元素。

<script>
const { createApp } = Vue;
const app = createApp({setup() {return {message: '天行健,君子自强不息~'};}
});   
app.mount('#app'); 
</script>
(5)查看网页

访问file:///D:/vueprojects/chapter02/data_binding.html
在这里插入图片描述

二、响应式数据绑定

(一)响应式数据绑定概述

为了实现页面中数据的动态更新,我们需要进行响应式数据绑定。Vue提供了多个函数来定义响应式数据,如ref()reactive()toRef()toRefs()

(二)使用ref()函数

1、定义

ref()函数用于将普通数据转换为响应式数据。

2、语法

定义响应式数据:

响应式数据 = ref(数据)

修改响应式数据:

响应式数据.value = 新值

3、演示

创建一个名为Ref.vue的单文件组件,演示如何使用ref()函数。

代码示例:

<template><div id="box">{{ message }}</div>
</template><script setup>
import { ref } from 'vue'
const message = ref('读书破万卷,下笔如有神')
setTimeout(() => {message.value = '会当凌绝顶,一览众山小'
}, 2000)
</script><style>
#box {text-align: center;font-family: 楷体;font-size: 35px;font-weight: bold;color: purple;
}
</style>

(三)使用reactive()函数

1、定义

reactive()函数用于创建一个响应式对象或数组。

2、语法

响应式对象或数组 = reactive(普通的对象或数组)

3、演示

创建一个名为Reactive.vue的单文件组件,演示如何使用reactive()函数。

代码示例:

<template><div id="box">{{ poem.content }}</div>
</template><script setup>
import { reactive } from 'vue'
const poem = reactive({content : '感时花溅泪,恨别鸟惊心'})
setTimeout(() => {poem.content = '露从今夜白,月是故乡明'
}, 2000)
</script><style>
#box {margin-top: 25px;text-align: center;font-family: 楷体;font-size: 35px;font-weight: bold;color: blue;
}
</style>

(四)使用toRef()函数

1、定义

toRef()函数用于将响应式对象中的单个属性转换为响应式数据。

2、语法

响应式数据 = toRef(响应式对象, '属性名')

3、演示

创建一个名为ToRef.vue的单文件组件,演示如何使用toRef()函数。

代码示例:

<template><div id="box">{{ poem.m2 }}</div>
</template><script setup>
import { reactive, toRef } from 'vue'   
const poem = reactive({m1: '感时花溅泪,恨别鸟惊心', m2: '会当凌绝顶,一览众山小'})
const m2 = toRef(poem, 'm2')
setTimeout(() => {        m2.value = '露从今夜白,月是故乡明'
}, 2000)
</script><style>
#box {margin-top: 25px;text-align: center;font-family: 楷体;font-size: 35px;font-weight: bold;color: orange;
}
</style>

(五)使用toRefs()函数

1、定义

toRefs()函数用于将响应式对象中的所有属性转换为响应式数据。

2、语法

所有属性组成的对象 = toRefs(响应式对象)

3、演示

创建一个名为ToRefs.vue的单文件组件,演示如何使用toRefs()函数。

代码示例:

<template><div id="box"><p id="m1">{{ poem.m1 }}</p><p id="m2">{{ poem.m2 }}</p></div>
</template><script setup>
import { reactive, toRefs } from 'vue'   
const poem = reactive({m1: '床前明月光,疑是地上霜', m2: '不敢高声语,恐惊天上人'})
const {m1, m2} = toRefs(poem)
setTimeout(() => {        m1.value = '众鸟高飞尽,孤云独去闲'
}, 2000)
setTimeout(() => {                m2.value = '春风知别苦,不遣柳条青'
}, 5000)
</script><style>
#box {margin-top: 25px;text-align: center;font-family: 楷体;font-size: 35px;font-weight: bold;color: green;
}
#m1 {color: brown;
}
#m2 {color: gold
}
</style>

(六)课堂练习 - 实现轮播图

1、创建单文件组件

components目录下创建一个名为SlideShow.vue的单文件组件。这个组件将实现一个简单的轮播图功能。

代码示例:

<template><div id="app"><div class="slide"><img :src="slides[currentIndex]"></div></div>
</template><script setup>import { ref } from 'vue';// 导入图片import linux from '../assets/linux.png';import hadoop from '../assets/hadoop.png';import hive from '../assets/hive.png';import spark from '../assets/spark.png';// 使用 ref 创建响应式的 slides 数组和 currentIndex 引用const slides = ref([linux, hadoop, hive, spark]);const currentIndex = ref(0);// 轮播到下一张const goNext = () => {currentIndex.value = (currentIndex.value + 1) % slides.value.length;};// 每3秒轮播一次let intervalId = setInterval(goNext, 3000);
</script><style>#app {display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f2f5;}.slide {margin: 0 10px;padding: 10px;border: 1px solid blueviolet;font-size: 35px;font-family: 仿宋;color: red;max-width: 80%;max-height: 80%;overflow: hidden;}img {width: 400px;  height: 300px;display: block;}
</style>

2、切换页面显示组件

import App from './components/SlideShow.vue'

3、查看轮播图效果

访问http://localhost:5173,你将看到初始显示的是linux图片。每3秒后,图片将自动切换到下一张,依次是hadoophivespark图片。

在这里插入图片描述

三、实战总结

通过本次实战,我们不仅学习了如何使用Vue的数据绑定和响应式数据,还亲手实现了一个实用的轮播图组件。希望大家能够通过这个例子,更好地理解Vue的响应式原理,并将其应用到更多的项目中去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/457252.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效文本编辑与导航:Vim中的三种基本模式及粘滞位的深度解析

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

sheng的学习笔记-AI基础-正确率/召回率/F1指标/ROC曲线

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 分类准确度问题 假设有一个癌症预测系统&#xff0c;输入体检信息&#xff0c;可以判断是否有癌症。如果癌症产生的概率只有0.1%&#xff0c;那么系统预测所有人都是健康&#xff0c;即可达到99.9%的准确率。 但显然这样的…

Linux中级(DNS域名解析服务器)

一。产生原因1.IP地址&#xff1a;是互联网上计算机唯一的逻辑地址&#xff0c;通过IP地址实现不同计算机之间的相互通信&#xff0c;每台联网计算机都需要通过IP地址来互相联系和分别&#xff0c;但由于IP地址是由一串容易混淆的数字串构成&#xff0c;人们很难记忆所有计算机…

MySql中的锁的分类

锁的分类 MySQL锁可以按模式分类为&#xff1a;乐观锁与悲观锁。按粒度分可以分为全局锁、表级锁、页级锁、行级锁。按属性可以分为&#xff1a;共享锁、排它锁。按状态分为&#xff1a;意向共享锁、意向排它锁。按算法分为&#xff1a;间隙锁、临键锁、记录锁。 二、全局锁、表…

3-petalinux2018.3 摸索记录 - 命令驱动 _ 交叉编译链

一、命令行控制GPIO 对于ps端设备&#xff0c;在板卡的linux系统中&#xff0c;切换到/sys/class/gpio路径下可以看到目前挂载的gpio设备。 export&#xff1a; 导入用户空间 gpiochip&#xff1a; 系统中gpio寄存器信息 unexport&#xff1a; 移除用户空间 以MIO40和MIO42…

数据结构------手撕链表(一)【不带头单向非循环】

文章目录 链表概念链表的使用LinkedList 的几种遍历方式单链表的模拟实现&#xff08;不带头&#xff09;链表面试题 观察ArrayList 顺序表的源码发现&#xff0c;底层是使用数组实现的。由于其底层是一段连续空间&#xff0c;当在ArrayList任意位置插入或者删除元素时&#xf…

Java基础(7)图书管理系统

目录 1.前言 2.正文 2.1思路 2.2Book包 2.3people包 2.4operation包 2.5主函数 3.小结 1.前言 哈喽大家好吖&#xff0c;今天来给前面Java基础的学习来一个基础的实战&#xff0c;做一个简单的图书管理系统&#xff0c;这里边综合利用了我们之前学习到的类和对象&…

研发运营一体化(DevOps)能力成熟度模型

目录 应用设计 安全风险管理 技术运 持续交付 敏捷开发管理 基于微服务的端到端持续交付流水线案例 应用设计 安全风险管理 技术运 持续交付

Android调用系统相机录像并设置参数

最近要做一个 Android上的录像功能&#xff0c;由于之前做拍照功能完全是用自定义方式&#xff0c;太麻烦。故这次决定直接调用系统相机来录像。 一、添加权限 首先&#xff0c;添加必要的权限 <!-- 授予该程序使用摄像头的权限 --><uses-permission android:name&q…

Could not find artifact cn.hutool:hutool-all:jar:8.1 in central 导入Hutool报错

<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.9</version></dependency> 引入hutool 8.1版本的工具…

攻防世界-流量分析WP

流量分析1来自 <攻防世界> 题目描述:流量分析&#xff0c;你知道这堆流量做了什么事情吗&#xff0c;你能恢复出来flag吗&#xff1f; 1&#xff0c;首先查看IPv4统计信息 如果该流量记录的是黑客的攻击行为产生的流量&#xff0c;那么出现频率最高的流量应该来自攻击者…

2024软考网络工程师笔记 - 第8章.网络安全

文章目录 网络安全基础1️⃣网络安全威胁类型2️⃣网络攻击类型3️⃣安全目标与技术 &#x1f551;现代加密技术1️⃣私钥密码/对称密码体制2️⃣对称加密算法总结3️⃣公钥密码/非对称密码4️⃣混合密码5️⃣国产加密算法 - SM 系列6️⃣认证7️⃣基于公钥的认证 &#x1f552…

论文笔记:LaDe: The First Comprehensive Last-mile Delivery Dataset from Industry

2023 KDD 1 intro 1.1 背景 随着城市化进程的加快和电子商务的发展&#xff0c;最后一公里配送已成为一个关键的研究领域 最后一公里配送&#xff0c;如图1所示&#xff0c;是指连接配送中心和客户的包裹运输过程&#xff0c;包括包裹的取件和配送除了对客户满意度至关重要外…

cpp的vector类

本篇将讲述vector类中的各种重要和常用函数&#xff08;begin&#xff08;&#xff09;、end&#xff08;&#xff09;、rbegin&#xff08;&#xff09;、rend&#xff08;&#xff09;cbegin&#xff08;&#xff09;、cend&#xff08;&#xff09; 、crbegin&#xff08;&a…

Vuejs设计与实现 — 渲染器核心:挂载与更新

前言 挂载 与 更新 是 渲染器 的核心功能&#xff0c;也是渲染器应该要提供的基本功能&#xff0c;而 挂载 和 更新 又是基于 VNode 虚拟节点的&#xff0c;因为 VNode 节点描述了其对应的 真实 DOM 应该是什么样子的。 挂载与卸载 VNode 节点 无论是 vue 还是 react 都引入…

k8s 综合项目笔记

综述 这篇笔记主要是为了记录下自己写 k8s 综合项目的过程。 由于自己之前已经写过简单的开发和运维项目&#xff0c;所以这里就结合一下&#xff0c;在搭建 k8s 集群后安装运维常用服务&#xff0c;比如 ansible 和 prometheus&#xff0c;用 NFS 实现数据存储同步&#xff0c…

鸿蒙中富文本编辑与展示

富文本在鸿蒙系统如何展示和编辑的&#xff1f;在文章开头我们提出这个疑问&#xff0c;带着疑问来阅读这篇文章。 富文本用途可以展示图文混排的内容&#xff0c;在日常App 中非常常见&#xff0c;比如微博的发布与展示&#xff0c;朋友圈的发布与展示&#xff0c;都在使用富文…

LeetCode_231. 2 的幂_java

1、题目 231. 2 的幂https://leetcode.cn/problems/power-of-two/ 给你一个整数 n&#xff0c;请你判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n &#xff0c;则认为 n 是 2 的幂次方…

ComfyUI初体验

ComfyUI 我就不过多介绍了&#xff0c;安装和基础使用可以看下面大佬的视频&#xff0c;感觉自己靠图文描述的效果不一定好&#xff0c;大家看视频比较方便。 ComfyUI全球爆红&#xff0c;AI绘画进入“工作流时代”&#xff1f;做最好懂的Comfy UI入门教程&#xff1a;Stable D…

ArcGIS001:ArcGIS10.2安装教程

摘要&#xff1a;本文详细介绍arcgis10.2的安装、破解、汉化过程。 一、软件下载 安装包链接&#xff1a;https://pan.baidu.com/s/1T3UJ7t_ELZ73TH2wGOcfpg?pwd08zk 提取码&#xff1a;08zk 二、安装NET Framework 3.5 双击打开控制面板&#xff0c;点击【卸载程序】&…