当前位置: 首页 > article >正文

前端小食堂 | Day11 - Vue.js の烹饪秘籍

🎨 今日主菜:Vue 常用技巧全家桶

1. 响应式烹饪秘籍
<script setup>  
// 🍳 精准控制响应式  
const counter = ref(0); // 基本类型用ref  
const user = reactive({ name: '小明', age: 18 }); // 对象用reactive  // 🔥 自动追踪依赖  
watchEffect(() => {  console.log(`计数器变化:${counter.value}`);  
});  // 🧊 深层监听对象  
watch(() => user.age, (newVal, oldVal) => {  console.log(`年龄从 ${oldVal} → ${newVal}`);  
}, { deep: true });  
</script>  <template>  <button @click="counter++">{{ counter }}</button>  <input v-model="user.age" type="number">  
</template>  

🔔 核心要点

  • ref 处理基本类型,用.value访问
  • reactive 处理对象/数组,可直接修改属性
  • 优先使用 watchEffect 自动追踪依赖

2. 组件通信の六脉神剑

🍙 Props/Emits(父子传值)

<!-- 父组件 -->  
<Child :title="msg" @update="handleUpdate" />  <!-- 子组件 -->  
<script setup>  
defineProps(['title']);  
const emit = defineEmits(['update']);  const send = () => {  emit('update', '新消息');  
}  
</script>  

🍱 Provide/Inject(跨层传递)

// 祖先组件  
provide('theme', { color: 'red' });  // 后代组件  
const theme = inject('theme', { color: 'blue' }); // 默认值  

🍔 模板引用(直接操作)

<ChildComponent ref="childRef" />  <script setup>  
import { ref } from 'vue';  
const childRef = ref(null);  // 调用子组件方法  
childRef.value.someMethod();  
</script>  

3. 性能优化小烧烤
<!-- 🚀 静态内容缓存 -->  
<div v-once>{{ neverChangeText }}</div>  <!-- 🎯 虚拟滚动优化 -->  
<RecycleScroller  :items="bigList"  :item-size="50"  key-field="id"  
>  <template #default="{ item }">  <div>{{ item.content }}</div>  </template>  
</RecycleScroller>  <!-- 🔥 组件持久化 -->  
<KeepAlive include="TabComponent">  <component :is="currentComponent" />  
</KeepAlive>  

❄️ 冷知识:Vue 3 魔法特性

// 🪄 动态CSS绑定  
const color = ref('red');  
<style scoped>  
.text {  color: v-bind(color);  
}  
</style>  // 🧩 自动导入组件  
// vite.config.js  
import Components from 'unplugin-vue-components/vite';  
export default {  plugins: [  Components({ /* 自动识别components目录 */ }),  ]  
}  

🌟 实验室魔法厨房

实现智能搜索组件

<template>  <input v-model="keyword" @input="search" />  <div v-if="loading">🌀 加载中...</div>  <ul v-else>  <li v-for="item in results" :key="item.id">  {{ item.name }}  </li>  </ul>  
</template>  <script setup>  
import { ref, watchDebounced } from '@vueuse/core';  const keyword = ref('');  
const results = ref([]);  
const loading = ref(false);  watchDebounced(keyword, async (val) => {  if (!val.trim()) return;  loading.value = true;  results.value = await fetchResults(val);  loading.value = false;  
}, { debounce: 300 });  
</script>  

明日秘技:《Vue 3 性能调优の火焰掌——内存泄漏排查指南》 🔥
(留言告诉我你遇到的Vue奇葩问题,本厨神在线诊断!💻)


🛎️ 本日避坑指南

  1. v-if 与 v-for 的优先级
<!-- ❌ 错误用法 -->  
<li v-for="item in list" v-if="item.visible"></li>  <!-- ✅ 正确姿势 -->  
<template v-for="item in list">  <li v-if="item.visible" :key="item.id"></li>  
</template>  
  1. 响应式丢失问题
// ❌ 解构会丢失响应性  
const { x, y } = reactive({ x: 1, y: 2 });  // ✅ 使用toRefs保持响应  
const { x, y } = toRefs(reactiveObj);  
  1. 事件内存泄漏
onMounted(() => {  window.addEventListener('resize', handleResize);  
});  // 🚨 必须清理!  
onUnmounted(() => {  window.removeEventListener('resize', handleResize);  
});  

相关文章:

前端小食堂 | Day11 - Vue.js の烹饪秘籍

&#x1f3a8; 今日主菜&#xff1a;Vue 常用技巧全家桶 1. 响应式烹饪秘籍 <script setup> // &#x1f373; 精准控制响应式 const counter ref(0); // 基本类型用ref const user reactive({ name: 小明, age: 18 }); // 对象用reactive // &#x1f525; 自…...

如何将本地已有的仓库上传到gitee (使用UGit)

1、登录Gitee。 2、点击个人头像旁边的加号&#xff0c;选择新建仓库&#xff1a; 3、填写仓库相关信息 4、复制Gitee仓库的地址 5、绑定我们的本地仓库与远程仓库 6、将本地仓库发布&#xff08;推送&#xff09;到远程仓库&#xff1a; 注意到此处报错&#xff…...

多方安全计算(MPC)电子拍卖系统

目录 一、前言二、多方安全计算(MPC)与电子拍卖系统概述2.1 多方安全计算(MPC)的基本概念2.2 电子拍卖系统背景与需求三、MPC电子拍卖系统设计原理3.1 系统总体架构3.2 电子拍卖中的安全协议3.3 数学与算法证明四、数据加解密模块设计五、GPU加速与系统性能优化六、GUI设计与系…...

Day04 模拟原生开发app过程 Androidstudio+逍遥模拟器

1、用Androidstudio打开已经写好了的music项目 2、逍遥模拟器打开apk后缀文件 3、在源文件搜索关键字 以后的测试中做资产收集...

C# Channel

核心概念创建Channel无界通道有界通道FullMode选项 生产者-消费者模式生产者写入数据消费者读取数据 完整示例高级配置优化选项&#xff1a;取消操作&#xff1a;通过 CancellationToken 取消读写。 错误处理适用场景Channel的类型创建Channel写入和读取消息使用场景示例代码注…...

17网商品列表的HTML结构是怎样的?

根据搜索结果&#xff0c;目前没有直接提供17网&#xff08;17zwd&#xff09;商品列表的HTML结构的详细信息。不过&#xff0c;我们可以根据一般的电商网站结构进行推测&#xff0c;并结合已有的爬虫代码示例来分析可能的HTML结构。 17网商品列表的HTML结构推测 一般来说&am…...

若依ry-vue分离板(完整版)前后端部署

目录 1.目标 2.准备工作 3.源码下载 4.整理前后端目录 5.先部署后端 &#xff08;1&#xff09;导入数据库 &#xff08;2&#xff09;改代码数据库配置 &#xff08;3&#xff09;运行redis &#xff08;4&#xff09;运行执行文件 &#xff08;5&#xff09;后端启…...

【YOLOv8】YOLOv8改进系列(5)----替换主干网络之EfficientFormerV2

主页&#xff1a;HABUO&#x1f341;主页&#xff1a;HABUO &#x1f341;YOLOv8入门改进专栏&#x1f341; &#x1f341;如果再也不能见到你&#xff0c;祝你早安&#xff0c;午安&#xff0c;晚安&#x1f341; 【YOLOv8改进系列】&#xff1a; 【YOLOv8】YOLOv8结构解读…...

深入理解 HTML 文本格式化

在网页开发中&#xff0c;HTML 文本格式化是一项基础且关键的技能。通过合理运用 HTML 格式化标签&#xff0c;我们能够让网页上的文本以丰富多样的形式呈现&#xff0c;从而提升用户体验。本文将详细介绍 HTML 文本格式化的相关知识。​ 一、HTML 文本格式化基础​ 加粗文本…...

时序和延时

1、延迟模型的类型 verilog有三种类型的延迟模型&#xff1a;分布延迟 、 集总延迟 、 路径延迟&#xff08;pin to pin&#xff09; 1.1、 分布延迟 分布延迟是在每个独立元件的基础上进行定义的。 module M(output wire out ,input wire a …...

北大一二三四版全套DeepSeek教学资料

DeepSeek学习资料合集&#xff1a;https://pan.quark.cn/s/bb6ebf0e9b4d DeepSeek实操变现指南&#xff1a;https://pan.quark.cn/s/76328991eaa2 你是否渴望深入探索人工智能的前沿领域&#xff1f;是否在寻找一份能引领你从理论到实践&#xff0c;全面掌握AI核心技术的学习…...

垃圾收集算法与收集器

在 JVM 中&#xff0c;垃圾收集&#xff08;Garbage Collection, GC&#xff09;算法的核心目标是自动回收无用对象的内存&#xff0c;同时尽量减少对应用性能的影响。以下是 JVM 中主要垃圾收集算法的原理、流程及实际应用场景的详细介绍&#xff1a; 一、标记-清除算法&#…...

【大模型】WPS 接入 DeepSeek-R1详解,打造全能AI办公助手

目录 一、前言 二、WPS接入AI工具优势​​​​​​​ 三、WPS接入AI工具两种方式 3.1 手动配置的方式 3.2 Office AI助手 四、WPS手动配置方式接入AI大模型 4.1 安装VBA插件 4.1.1 下载VBA插件并安装 4.2 配置WPS 4.3 WPS集成VB 4.4 AI助手效果测试 4.5 配置模板文…...

STM32步进电机驱动全解析(上) | 零基础入门STM32第五十七步

主题内容教学目的/扩展视频步进电机电路原理&#xff0c;跳线设置&#xff0c;驱动程序&#xff0c;调用控制。熟悉驱动程序&#xff0c;能调用控制。 师从洋桃电子&#xff0c;杜洋老师 &#x1f4d1;文章目录 一、步进电机核心原理图解二、核心特性与优势三、关键驱动方式对比…...

Spring Boot 多数据源解决方案:dynamic-datasource-spring-boot-starter 的奥秘(上)

在 Spring Boot 生态中&#xff0c;dynamic-datasource-spring-boot-starter 是一个非常实用的组件&#xff0c;它为我们在多数据源场景下提供了便捷的解决方案。在上一篇文章《一分钟上手&#xff1a;如何创建你的第一个 Spring Boot Starter》中&#xff0c;我们学习了如何创…...

[NewStarCTF 2023 公开赛道]ez_sql1 【sqlmap使用/大小写绕过】

题目&#xff1a; 发现id处可以sql注入&#xff1a; 虽然输入id1;show databases;#没什么回显&#xff0c;但是知道这里是字符型注入了 这次利用sqlmap注入 --dbs&#xff1a;列出所有数据库名字 python .\sqlmap.py -u http://a40b2f0a-823f-4c99-b43c-08b94ed0abb2.node5.…...

【商城实战(18)】后台管理系统基础搭建:从0到1构建电商中枢

【商城实战】专栏重磅来袭&#xff01;这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建&#xff0c;运用 uniapp、Element Plus、SpringBoot 搭建商城框架&#xff0c;到用户、商品、订单等核心模块开发&#xff0c;再到性能优化、安全加固、多端适配&#xf…...

新能源汽车充电综合解决方案:安科瑞电气助力绿色出行

安科瑞 华楠 18706163979 随着新能源汽车的迅猛发展&#xff0c;充电基础设施的建设成为了推动行业进步的关键。然而&#xff0c;充电技术滞后、运营效率低下、车桩比失衡等问题&#xff0c;依然困扰着广大车主和运营商。今天&#xff0c;我们要为大家介绍一款新能源汽车充电…...

蓝桥杯java-B组真题—动态规划

目录 一.什么是动态规划? 二.题目 第一种情况:集合本身之和为奇数 第二种情况:集合本身之和为偶数 下面是代码实现: 一.什么是动态规划? 这里就简单的解释一下&#xff0c;动态规划就是记录之前的计算结果&#xff0c;避免重复的计算之前已经计算过的结果&#xff0c;用…...

【网络编程】事件选择模型

十、基于I/O模型的网络开发 10.9 事件选择模型 10.0.1 基本概念 事件选择(WSAEventSelect) 模型是另一个有用的异步 I/O 模型。和 WSAAsyncSelect 模 型类似的是&#xff0c;它也允许应用程序在一个或多个套接字上接收以事件为基础的网络事件通知&#xff0c;最 主要的差别在…...

网易邮箱如何用大数据任务调度实现海量邮件数据处理?Apache DolphinScheduler用户交流会上来揭秘!

你是否对大数据领域的前沿应用充满好奇&#xff1f;网易邮箱作为互联网大厂网易的重要业务线&#xff0c;在大数据应用方面有着诸多值得借鉴的实践经验。你是否渴望深入了解网易邮箱如何借助 Apache DolphinScheduler 实现海量邮件数据处理、用户行为分析、实时监控等核心业务场…...

前端知识点---路由模式-实例模式和单例模式(ts)

在 ArkTS&#xff08;Ark UI 框架&#xff09;中&#xff0c;路由实例模式&#xff08;Standard Instance Mode&#xff09;主要用于管理页面跳转。当创建一个新页面时&#xff0c;可以选择标准实例模式&#xff08;Standard Mode&#xff09;或单实例模式&#xff08;Single M…...

固定表头、首列 —— uniapp、vue 项目

项目实地&#xff1a;也可以在 【微信小程序】搜索体验&#xff1a;xny.handbook 另一个体验项目&#xff1a;官网 一、效果展示 二、代码展示 &#xff08;1&#xff09;html 部分 <view class"table"><view class"tr"><view class&quo…...

langchain系列(九)- LangGraph 子图详解

目录 一、导读 二、原理说明 1、简介 2、子图图示 3、使用说明 三、基础代码实现 1、实现功能 2、Graph 图示 3、代码实现 4、输出 5、分析 四、人机交互 1、实现中断 2、历史状态&#xff08;父图&#xff09; 3、历史状态&#xff08;子图&#xff09; 4、历史…...

搜索引擎是如何理解你的查询并提供精准结果的?

目录 一、搜索引擎简单介绍 二、搜索引擎整体架构和工作过程 &#xff08;一&#xff09;整体分析 &#xff08;二&#xff09;爬虫系统 三个基本点 爬虫系统的工作流程 关键考虑因素和挑战 &#xff08;三&#xff09;索引系统 网页处理阶段 预处理阶段 反作弊分析…...

【前端】【组件】【vue2】封装一个vue2的ECharts组件,不用借助vue-echarts

在Vue2项目中使用ECharts 5.6的完整实现步骤如下&#xff1a; 安装依赖 npm install echarts5.6.2 --save # 指定安装5.x最新版本基础组件实现&#xff08;新建components/ECharts.vue&#xff09; <template><div ref"chartDom" class"echarts-co…...

18天 - 常见的 HTTP 状态码有哪些?HTTP 请求包含哪些内容,请求头和请求体有哪些类型?HTTP 中 GET 和 POST 的区别是什么?

常见的 HTTP 状态码有哪些&#xff1f; HTTP 状态码用于指示服务器对客户端请求的响应结果&#xff0c;常见的 HTTP 状态码可以分为以下几类&#xff1a; 1. 信息类&#xff08;1xx&#xff09; 100 Continue&#xff1a;客户端应继续发送请求。101 Switching Protocols&…...

IDEA软件安装环境配置中文插件

一、Java环境配置 1. JDK安装8 访问Oracle官网下载JDK8&#xff08;推荐JDK8&#xff0c;11&#xff09;Java Downloads | Oracle 双击安装程序&#xff0c;保持默认设置连续点击"下一步"完成安装 验证JDK安装&#xff0c;winR键 然后输入cmd&#xff0c;输入java…...

循环神经网络(RNN):时序建模的核心引擎与演进之路

在人工智能处理序列数据的战场上&#xff0c;循环神经网络&#xff08;RNN&#xff09;如同一个能够理解时间的智者。从 2015 年谷歌神经机器翻译系统颠覆传统方法&#xff0c;到 2023 年 ChatGPT 实现对话连续性&#xff0c;这些突破都植根于 RNN 对时序建模的深刻理解。本文将…...

HTML 表单 (form) 的作用解释

表单在网页中主要负责的是数据采集功能&#xff0c;一个表单基本由三部分组成&#xff1a; 表单标签&#xff1a;这里面包含了处理表单数据所用 CGI &#xff08;Common Gateway Interface&#xff0c;通用网关接口&#xff09;程序的 URL &#xff08;Uniform Resource Locati…...