Vue 3 学习文档(一)
最近打算做一个项目,涉及到一些前端的知识,因上一次接触前端已经是三四年前了,所以捡一些简单的功能做一下复习。
- 响应式函数:reactive 和 ref
- 属性绑定:v-bind 和简写语法
- 事件监听:v-on 和简写语法 @
- 双向绑定:v-model]
- 条件渲染:v-if, v-else, v-else-if
- 列表渲染:v-for 和 key
- 生命周期钩子:onMounted, onUpdated, onUnmounted
- 侦听器:watch
- 父子组件:props 和 emit
- 插槽:Slots
响应式函数:reactive 和 ref
reactive
Vue 的 reactive() API 用于声明响应式对象。它通过 JavaScript 的 Proxy 实现,能够使对象(包括数组和 Map、Set)的属性响应式:
import { reactive } from 'vue'const counter = reactive({count: 0
})console.log(counter.count) // 0
counter.count++
reactive()适用于对象类型的数据。- 创建的对象是深度响应式的,修改任何嵌套的属性都会自动更新视图。
ref
ref() 用于声明响应式的基本数据类型(如字符串、数字、布尔值等)或复杂类型。ref() 返回的对象有一个 .value 属性来存储值。
import { ref } from 'vue'const message = ref('Hello World!')console.log(message.value) // "Hello World!"
message.value = 'Changed'
ref用于包裹值,特别是基本数据类型。
注意事项:
reactive与ref的选择:reactive用于对象、数组,ref用于基本数据类型(以及其他对象类型)。ref的值不可直接修改,必须通过.value。reactive的对象不支持直接解除响应式,但可以通过替换整个对象来解除响应式。
属性绑定:v-bind 和简写语法 :
v-bind 语法
v-bind 用于动态绑定属性,它可以绑定 JavaScript 表达式到元素的特性:
<div v-bind:id="dynamicId"></div>
简写形式为 ::
<div :id="dynamicId"></div>
注意事项:
- 动态绑定可以用于
class、style、id等 HTML 属性。 - 绑定对象时,Vue 会自动合并类和样式。
事件监听:v-on 和简写语法 @
v-on 语法
v-on 用于监听 DOM 事件,通常用来绑定事件处理器:
<button v-on:click="increment">{{ count }}</button>
简写形式为 @:
<button @click="increment">{{ count }}</button>
注意事项:
.once修饰符:只触发一次事件。.prevent和.stop修饰符:阻止默认行为和事件冒泡。
双向绑定:v-model
v-model 语法
v-model 用于实现双向绑定,将表单控件的值与组件状态同步:
<input v-model="text">
v-model自动处理绑定和事件监听的工作,不需要手动写事件监听器。
自定义 v-model
v-model 允许自定义绑定属性和事件名称:
<ChildComp v-model:customProp="data"></ChildComp>
条件渲染:v-if, v-else, v-else-if
v-if 语法
v-if 用于根据条件渲染元素:
<h1 v-if="awesome">Vue is awesome!</h1>
v-if只会在条件为真时渲染元素。
注意事项:
v-if会移除 DOM 元素,因此适用于不常更改的条件。- 使用
v-show代替v-if时,性能较好,因为它只改变元素的display样式。
列表渲染:v-for 和 key
v-for 语法
v-for 用于渲染数组或对象的列表:
<ul><li v-for="todo in todos" :key="todo.id">{{ todo.text }}</li>
</ul>
key是必需的,它帮助 Vue 跟踪每个元素,优化渲染性能。
注意事项:
key的作用是确保每个元素的唯一性,帮助 Vue 更高效地更新 DOM。- 在渲染对象时,最好将对象转换为数组进行渲染。
生命周期钩子:onMounted, onUpdated, onUnmounted
onMounted
onMounted 钩子在组件挂载到 DOM 后调用。它常用于操作 DOM 或执行异步请求。
import { onMounted } from 'vue'onMounted(() => {console.log('Component is mounted');
});
注意事项:
onMounted在组件首次渲染后调用,不会在子组件的渲染前调用。- 可以使用
onBeforeMount和onAfterMount来控制组件挂载过程。
侦听器:watch
watch 语法
watch 用于响应式地监听数据变化:
import { ref, watch } from 'vue'const count = ref(0)watch(count, (newValue, oldValue) => {console.log('Count changed:', newValue)
})
深度侦听
可以通过设置 deep: true 来深度监听对象的嵌套属性:
watch(myObject, (newVal) => {console.log('Object changed', newVal);
}, { deep: true })
父子组件:props 和 emit
props 语法
父组件可以通过 props 向子组件传递数据:
<!-- ChildComp.vue -->
<script setup>
const props = defineProps({msg: String
})
</script>
emit 语法
子组件通过 emit 向父组件触发事件:
<script setup>
const emit = defineEmits(['response'])
emit('response', 'Hello from child')
</script>
注意事项:
props可以设置类型验证、默认值等属性。emit支持传递多个参数,可以定义事件名称和类型。
插槽:Slots
默认插槽
父组件通过插槽向子组件传递内容:
<ChildComp>This is some slot content!
</ChildComp>
子组件通过 <slot> 显示插槽内容:
<!-- ChildComp.vue -->
<slot />
具名插槽
可以使用具名插槽来区分不同的内容:
<ChildComp><template #header>Header content</template><template #footer>Footer content</template>
</ChildComp>
作用域插槽
子组件可以将数据暴露给父组件的插槽:
<ChildComp><template #default="{ data }"><p>{{ data }}</p></template>
</ChildComp>
相关文章:
Vue 3 学习文档(一)
最近打算做一个项目,涉及到一些前端的知识,因上一次接触前端已经是三四年前了,所以捡一些简单的功能做一下复习。 响应式函数:reactive 和 ref属性绑定:v-bind 和简写语法事件监听:v-on 和简写语法 双向绑…...
【适配】屏幕拖拽-滑动手感在不同分辨率下的机型适配
接到一个需求是类似下图的3D多房间视角,需要拖拽屏幕 问题 在做这种屏幕拖拽的时候发现,需要拖拽起来有跟手的感觉,会存在不同分辨率机型的适配问题。 即:美术调整好了机型1的手感,能做到手指按下顶层地板上下挪动&…...
牛客周赛 Round 69(A~E)
文章目录 A 构造C的歪思路code B 不要三句号的歪思路code C 仰望水面的歪思路code D 小心火烛的歪思路code E 喜欢切数组的红思路code 牛客周赛 Round 69 A 构造C的歪 思路 签到题,求出公差d,让最大的数加上公差d即可 code int a,b;cin >> a &…...
Spring Boot 实战:分别基于 MyBatis 与 JdbcTemplate 的数据库操作方法实现与差异分析
1. 数据库新建表 CREATE TABLE table_emp(id INT AUTO_INCREMENT,emp_name CHAR(100),age INT,emp_salary DOUBLE(10,5),PRIMARY KEY(id) );INSERT INTO table_emp(emp_name,age,emp_salary) VALUES("tom",18,200.33); INSERT INTO table_emp(emp_name,age,emp_sala…...
【jmeter】服务器使用jmeter压力测试(从安装到简单压测示例)
一、服务器上安装jmeter 1、官方下载地址,https://jmeter.apache.org/download_jmeter.cgi 2、服务器上用wget下载 # 更新系统 sudo yum update -y# 安装 wget 以便下载 JMeter sudo yum install wget -y# 下载 JMeter 压缩包(使用 JMeter 官方网站的最…...
使用Python实现自动化邮件通知:当长时程序运行结束时
使用Python实现自动化邮件通知:当长时程序运行结束时 前提声明 本代码仅供学习和研究使用,不得用于商业用途。请确保在合法合规的前提下使用本代码。 目录 引言项目背景项目设置代码分析 导入所需模块定义邮件发送函数发送邮件 实现步骤结语全部代码…...
框架学习07 - SpringMVC 其他功能实现
一. 拦截器实现HandlerInterceptor 接⼝ SpringMVC 中的 Interceptor 拦截器也是相当重要和相当有⽤的,它的主要作⽤是拦截⽤户的请求并进⾏相应的处理。⽐如通过它来进⾏权限验证,或者是来判断⽤户是否登陆等操作。对于 SpringMVC 拦截器的定义⽅式有两…...
NAT:连接私有与公共网络的关键技术(4/10)
一、NAT 的工作原理 NAT 技术的核心功能是将私有 IP 地址转换为公有 IP 地址,使得内部网络中的设备能够与外部互联网通信。其工作原理主要包括私有 IP 地址到公有 IP 地址的转换、端口号映射以及会话表维护这几个步骤。 私有 IP 地址到公有 IP 地址的转换࿱…...
RabbitMQ2:介绍、安装、快速入门、数据隔离
欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...
衡山派D133EBS 开发环境安装及SDK编译烧写镜像烧录
1.创建新文件夹,用来存放SDK包(其实本质就是路径要对就ok了),右键鼠标通过Open Git Bash here来打开git 输入命令 git clone --depth1 https://gitee.com/lcsc/luban-lite.git 来拉取,如下所示:࿰…...
【Spring MVC】如何获取cookie/session以及响应@RestController的理解,Header的设置
前言 🌟🌟本期讲解关于SpringMVC的编程之参数传递~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客 🔥 你的点赞就是小编不断更新的最大动力 🎆那么废…...
C++设计模式行为模式———策略模式
文章目录 一、引言二、策略模式三、总结 一、引言 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。与模板方法模式类似,都是以扩展的方式来支持未来的变化。…...
Spring Cloud 中 bootstrap.yml 配置文件详解
Spring Cloud 中 bootstrap.yml 配置文件详解 1. 什么是 bootstrap.yml? bootstrap.yml 是 Spring Cloud 提供的一个特殊配置文件,主要用于初始化 Spring Cloud 应用程序的环境。与常见的 application.yml 不同,bootstrap.yml 在 Spring 应用…...
Java项目实战II基于SpringBoot前后端分离的网吧管理系统(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着互联网技术的不断发展…...
ASP网络安全讲述
一 前言 Microsoft Active Server Pages(ASP)是服务器端脚本编写环境,使用它可以创建和运行动态、交互的 Web 服务器应用程序。使用 ASP 可以组合 HTML 页 、脚本命令和 ActiveX 组件以创建交互的 Web 页和基于 Web 的功能强大的应用程序…...
DFS 创建分级菜单
菜单级别不确定,想要自适应,且可以折叠的菜单。 数据是一个数组。 <template><div class"Level" ref"Level"></div> </template>import {ref} from vue export default{data(){Level:ref(null),menuData…...
HDU Go Running(最小点覆盖 + 网络流优化)
题目大意:有一条无限长跑道,每个人可以规定自己跑步的方向,起点,跑步起止时间。每个人跑步的速度都是1m/s。最后从监控人员哪里得到了n个报告,每个报告给出了某人在某一时候所在的位置,问跑步的最少可能人数…...
C++设计模式-中介者模式
动机(Motivation) 多个对象相互关联的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。在这种情况下,可以使用一种”中介对象“来管理对象间的关联关系,避免…...
文件上传与下载服务 | Flask 实战
之前介绍了 droppy 文件共享服务的搭建。但在一些场景中,我们需要在命令行或在 Python 代码中,临时上传和下载文件。这时可以用一个更简单的策略:使用 flask 编写一个临时的 API。 服务端配置 以下是一个简单的 Flask 应用程序代码示例&…...
MySQL 中的排序:索引排序与文件排序
文章目录 MySQL 中的排序:索引排序与文件排序全解析一、引言二、索引排序(一)原理(二)示例 三、文件排序(一)单路排序(二)双路排序(三)归并排序 四…...
AMLP框架实战:基于MACE构建高精度机器学习势函数
1. 项目概述:当机器学习势函数遇上自动化管道在计算化学和材料科学领域,我们长久以来面临着一个核心矛盾:精度与效率的权衡。密度泛函理论(DFT)能提供接近实验的精度,但计算成本高昂,通常只能处…...
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务当你的机器人正在执行一个长达10分钟的导航任务时,突然发现目标点设置错误,这时候如果只能干等着任务完成或者…...
为Alchitry Au FPGA开发板外接JTAG接口的完整指南
1. 项目概述与核心价值如果你正在使用基于Xilinx Artix-7 FPGA的Alchitry Au或Au开发板,并且已经厌倦了每次调试或烧录都要依赖板载的USB-JTAG桥接芯片,或者你的项目已经将板载USB接口挪作他用,那么为你的开发板外接一个独立的JTAG调试器&…...
Taotoken平台快速获取APIKey并开始你的第一个Python调用示例
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken平台快速获取APIKey并开始你的第一个Python调用示例 1. 准备工作:注册与登录 要开始使用Taotoken,…...
1901-2022年中国气温变化分析实战:用这份1km栅格数据我们能发现什么?
1901-2022年中国气温变化分析实战:如何从1km栅格数据中挖掘气候演变规律当一份覆盖122年、分辨率精确到1公里的气温栅格数据摆在面前时,我们看到的不仅是数字矩阵,更是一部写在经纬度坐标里的气候变迁史诗。这份由逐月数据聚合生成的逐年气温…...
MongoDB Limit 与 Skip 方法详解
MongoDB Limit 与 Skip 方法详解 引言 MongoDB 是一个高性能、可伸缩的文档存储系统,它提供了强大的数据存储和查询功能。在处理大量数据时,Limit 与 Skip 方法是 MongoDB 中常用的查询优化工具。本文将详细介绍 MongoDB 中的 Limit 与 Skip 方法,包括其基本用法、性能影响…...
XML 服务器
XML 服务器 引言 XML(可扩展标记语言)服务器在现代互联网技术中扮演着至关重要的角色。它为数据的传输和处理提供了灵活且高效的方式。本文将深入探讨XML服务器的概念、工作原理、应用场景及其在软件开发中的重要性。 什么是XML服务器? XML服务器是一种用于存储、处理和…...
phpMyAdmin CVE-2018-12613:从文件读取到RCE的伪协议利用链
1. 这个漏洞不是“能读文件”那么简单,而是后台权限的彻底失守phpMyAdmin 4.8.1里那个CVE-2018-12613,很多人扫到就报个“存在文件包含”,顺手贴个?targetphp://filter/convert.base64-encode/resource/etc/passwd截图完事。我去年在给一家教…...
简单学习 --> SSE
我们使用AI时,AI对我们说的话不会一次性把全部内容弹出来,而是会像流水一样,一点点吐出来,那么这种丝滑的交互体验,背后的核心就是 SSE (Server-Sent Events)。 什么是 SSE? SSE(Server-Sent …...
基于STM32与LoRa的低功耗物联网气象站DIY全攻略
1. 项目概述:打造一个低功耗的家庭气象站前阵子想给家里的智能家居系统加点“环境感知”能力,琢磨着搞个能实时监测室外温湿度、风速风向的小玩意儿。市面上成品气象站要么数据出不来,要么功耗感人,不适合长期户外部署。于是&…...
