Vue 3.0中核心的Composition API
在当今快速发展的前端生态系统中,Vue 3.0以其革命性的Composition API重新定义了组件开发的范式。作为Vue框架的一次重大进化,Composition API不仅解决了Options API在复杂组件中面临的逻辑复用和组织难题,更为开发者提供了更灵活、更强大的代码组织方式。
随着应用复杂度的不断提升,传统的Options API在处理大型组件时逐渐显现出局限性——相关逻辑被分散在不同的选项中,代码阅读和维护变得困难。Composition API应运而生,它允许开发者基于逻辑功能而非选项类型来组织代码,使得相关代码能够紧密聚合在一起,大大提升了代码的可读性和可维护性。
本文将介绍一些Vue 3.0核心的Composition API,从基础概念到高级用法,带您全面了解这一现代前端开发利器。
1. 响应式基础
1.1. ref
含义:创建一个包含单一响应式值的对象。
使用场景:用于定义单个基本类型(如字符串、数字)的响应式数据。
import { ref } from 'vue';
const count = ref(0);
function increment() {count.value++;
}
1.2. reactive
含义:创建一个深度响应的对象。
使用场景:用于定义包含多个属性的复杂数据结构。
import { reactive } from 'vue';
const state = reactive({count: 0,name: 'vue'
});
1.3. computed
含义:创建一个基于其他响应式状态的计算属性。
使用场景:当需要从其他响应式数据派生出新的值时使用。
import { ref, computed } from 'vue';
const count = ref(0);
const doubleCount = computed(() => count.value * 2);
1.4. readonly
含义:创建一个只读的响应式对象。
使用场景:保护状态数据不被外部修改。
import { reactive, readonly } from 'vue';
const state = reactive({ count: 0 });
const readonlyState = readonly(state);
1.5. watch
含义:监听一个或多个响应式数据的变化,并执行回调函数。
使用场景:需要对特定响应式数据的变化做出反应时使用。
import { ref, watch } from 'vue';
const count = ref(0);
watch(count, (newValue, oldValue) => {console.log(`Count changed from ${oldValue} to ${newValue}`);
});
1.6. watchEffect
含义:立即运行传入的副作用函数,并在其依赖的响应式状态发生变化时重新运行。
使用场景:用于自动收集依赖并重新执行副作用。
import { ref, watchEffect } from 'vue';
const count = ref(0);
watchEffect(() => {console.log(`Count is: ${count.value}`);
});
1.7. watchPostEffect
含义:与 watchEffect 类似,但在 DOM 更新后执行。
使用场景:需要在 DOM 更新后执行副作用时使用。
import { ref, watchPostEffect } from 'vue';
const count = ref(0);
watchPostEffect(() => {console.log(`DOM updated, count is: ${count.value}`);
});
1.8. watchSyncEffect
含义:与 watchEffect 类似,但在同一事件循环内同步执行。
使用场景:需要在同一事件循环内同步执行副作用时使用。
import { ref, watchSyncEffect } from 'vue';
const count = ref(0);
watchSyncEffect(() => {console.log(`Synchronous count: ${count.value}`);
});
2. 响应式工具
2.1. isRef
含义:检查一个值是否是一个 ref 对象。
使用场景:在处理混合类型数据时,确保安全地访问 ref 对象的值。
import { ref, isRef } from 'vue';
const count = ref(0);
console.log(isRef(count)); // true
2.2. unref
含义:返回 ref 对象的值,如果参数不是 ref 对象,则直接返回参数值。
使用场景:简化对 ref 对象值的访问。
import { ref, unref } from 'vue';
const count = ref(0);
console.log(unref(count)); // 0
2.3. toRef
含义:将响应式对象的某个属性转换为 ref 对象。
使用场景:在多个组件间共享响应式对象的某个属性。
import { reactive, toRef } from 'vue';
const state = reactive({ count: 0 });
const countRef = toRef(state, 'count');
2.4. toValue
含义:获取 ref 对象的值,如果参数不是 ref 对象,则直接返回参数值,类似于 unref。
使用场景:简化对 ref 对象值的访问。
import { ref, toValue } from 'vue';
const count = ref(0);
console.log(toValue(count)); // 0
2.5. toRefs
含义:将响应式对象的每个属性转换为 ref 对象。
使用场景:在多个组件间共享响应式对象的所有属性。
import { reactive, toRefs } from 'vue';const state = reactive({ count: 0, name: 'vue' });
const { count, name } = toRefs(state);
2.6. isProxy
含义:检查一个值是否是一个代理对象(由 reactive 或 readonly 创建)。
使用场景:确认一个对象是否是响应式或只读对象。
import { reactive, isProxy } from 'vue';
const state = reactive({ count: 0 });
console.log(isProxy(state)); // true
2.7. isReactive
含义:检查一个值是否是一个响应式对象。
使用场景:确认一个对象是否是响应式对象。
import { reactive, isReactive } from 'vue';
const state = reactive({ count: 0 });
console.log(isReactive(state)); // true
2.8. isReadonly
含义:检查一个值是否是一个只读对象。
使用场景:确认一个对象是否是只读对象。
import { readonly, isReadonly } from 'vue';
const state = readonly({ count: 0 });
console.log(isReadonly(state)); // true
3. 响应式进阶
3.1. shallowRef
含义:创建一个浅层响应式对象。
使用场景:当只需要浅层响应而不需要深度响应时使用。
import { shallowRef } from 'vue';
const state = shallowRef({ count: 0 });
state.value.count = 1; // 不会触发响应式
3.2. triggerRef
含义:手动触发 ref 对象的更新。
使用场景:当需要手动触发 ref 更新时间。
import { ref, triggerRef } from 'vue';
const state = ref({ count: 0 });
state.value.count = 1;
triggerRef(state); // 手动触发更新
3.3. customRef
含义:创建一个自定义的 ref,并控制其依赖追踪和通知。
使用场景:需要自定义 ref 的行为时使用。
import { customRef } from 'vue';
function useDebouncedRef(value, delay = 200) {let timeout;return customRef((track, trigger) => {return {get() {track();return value;},set(newValue) {clearTimeout(timeout);timeout = setTimeout(() => {value = newValue;trigger();}, delay);}};});
}const debounced = useDebouncedRef(0);
3.4. shallowReactive
含义:创建一个浅层响应式对象。
使用场景:当只需要浅层响应而不需要深度响应时使用。
import { shallowReactive } from 'vue';
const state = shallowReactive({ nested: { count: 0 } });
state.nested.count = 1; // 不会触发响应式
3.5. shallowReadonly
含义:创建一个浅层只读对象。
使用场景:当只需要浅层只读而不需要深度只读时使用。
import { shallowReadonly } from 'vue';
const state = shallowReadonly({ nested: { count: 0 } });
state.nested.count = 1; // 不会触发只读警告
3.6. toRaw
含义:返回代理对象的原始对象。
使用场景:需要获取响应式对象的原始非响应对象时使用。
import { reactive, toRaw } from 'vue';
const state = reactive({ count: 0 });
const rawState = toRaw(state);
3.7. markRaw
含义:标记一个对象,使其永远不会成为响应式对象。
使用场景:当不希望某个对象被 Vue 转换为响应式对象时使用。
import { markRaw } from 'vue';
const raw = markRaw({ count: 0 });
3.8. effectScope
含义:创建一个 effect 作用域,可以在这个作用域内收集和处理副作用。
使用场景:需要管理多个副作用并在适当时机停止它们时使用。
import { effectScope, ref } from 'vue';
const scope = effectScope();
scope.run(() => {const count = ref(0);watchEffect(() => {console.log(count.value);});
});
// 停止所有在这个作用域内收集的副作用
scope.stop();
3.9. getCurrentScope
含义:返回当前的 effect 作用域。
使用场景:在 effect 作用域内部获取当前作用域实例。
import { effectScope, getCurrentScope } from 'vue';
const scope = effectScope();
scope.run(() => {console.log(getCurrentScope() === scope); // true
});
3.10. onScopeDispose
含义:注册一个回调函数,当 effect 作用域被停止时调用。
使用场景:在 effect 作用域被停止时执行清理操作。
import { effectScope, onScopeDispose, ref, watchEffect } from 'vue';
const scope = effectScope();
scope.run(() => {const count = ref(0);watchEffect(() => {console.log(count.value);});onScopeDispose(() => {console.log('Scope disposed');});
});
scope.stop(); // 输出: "Scope disposed"
4. 生命周期函数
4.1. onMounted
含义:在组件挂载完成后调用。
使用场景:在组件挂载完成后执行初始化逻辑。
import { onMounted } from 'vue';
onMounted(() => {console.log('Component has been mounted');
});
4.2. onUpdated
含义:在组件更新完成后调用。
使用场景:在组件更新后执行逻辑。
import { onUpdated } from 'vue';
onUpdated(() => {console.log('Component has been updated');
});
4.3. onUnmounted
含义:在组件卸载后调用。
使用场景:在组件卸载后执行清理操作。
import { onUnmounted } from 'vue';
onUnmounted(() => {console.log('Component has been unmounted');
});
4.4. onBeforeMount
含义:在组件挂载前调用。
使用场景:在组件挂载前执行逻辑。
import { onBeforeMount } from 'vue';
onBeforeMount(() => {console.log('Component will mount soon');
});
4.5. onBeforeUpdate
含义:在组件更新前调用。
使用场景:在组件更新前执行逻辑。
import { onBeforeUpdate } from 'vue';
onBeforeUpdate(() => {console.log('Component will update soon');
});
4.6. onBeforeUnmount
含义:在组件卸载前调用。
使用场景:在组件卸载前执行清理操作。
import { onBeforeUnmount } from 'vue';
onBeforeUnmount(() => {console.log('Component will unmount soon');
});
4.7. onErrorCaptured
含义:在捕获一个来自后代组件的错误时调用。
使用场景:处理和记录错误。
import { onErrorCaptured } from 'vue';
onErrorCaptured((err, instance, info) => {console.error(err);return false;
});
4.8. onRenderTracked
含义:在组件的响应式依赖被追踪时调用。
使用场景:调试响应式依赖追踪。
import { onRenderTracked } from 'vue';
onRenderTracked((e) => {console.log('Render tracked:', e);
});
4.9. onRenderTriggered
含义:在组件的响应式依赖触发重新渲染时调用。
使用场景:调试响应式依赖触发。
import { onRenderTriggered } from 'vue';
onRenderTriggered((e) => {console.log('Render triggered:', e);
});
4.10. onActivated
含义:在 keep-alive 组件被激活时调用。
使用场景:在 keep-alive 组件激活时执行逻辑。
import { onActivated } from 'vue';
onActivated(() => {console.log('Component activated');
});
4.11. onDeactivated
含义:在 keep-alive 组件被停用时调用。
使用场景:在 keep-alive 组件停用时执行逻辑。
import { onDeactivated } from 'vue';
onDeactivated(() => {console.log('Component deactivated');
});
4.12. onServerPrefetch
含义:在组件的服务端渲染期间调用。
使用场景:在服务端渲染期间执行数据预取逻辑。
import { onServerPrefetch } from 'vue';
onServerPrefetch(() => {return fetch('/api/data').then((res) => {// 处理数据});
});
相关文章:
Vue 3.0中核心的Composition API
在当今快速发展的前端生态系统中,Vue 3.0以其革命性的Composition API重新定义了组件开发的范式。作为Vue框架的一次重大进化,Composition API不仅解决了Options API在复杂组件中面临的逻辑复用和组织难题,更为开发者提供了更灵活、更强大的代…...
洛谷B3840 [GESP202306 二级] 找素数
题目描述 小明刚刚学习了素数的概念:如果一个大于 1 的正整数,除了 1 和它自身外,不能被其他正整数整除,则这个正整数是素数。现在,小明想找到两个正整数 A 和 B 之间(包括 A 和 B)有多少个素数…...
Axure设计之带分页的穿梭框原型
穿梭框(Transfer)是一种常见且实用的交互组件,广泛应用于需要批量选择或分配数据的场景。 一、应用场景 其典型应用场景包括: 权限管理系统:批量分配用户角色或系统权限数据筛选工具:在大数据集中选择特…...
VsCode开发环境之Node.js离线部署
1.下载node部署文件 地址为:CNPM Binaries Mirror 2.下载后解压 3.验证版本 4.配置环境变量 5.外网寻找一个对应项目的npm文件--node_modules 6.node_modules文件夹复制到node.js的路径下 7.接着就可以正常运行了。...
补充Depends 和 request: Request 依赖注入用法的注意事项
不要在非路由函数(如类的 __init__ 方法或普通模块函数)中直接使用 Depends() 或 request。 Depends 和 request: Request 是 FastAPI 提供的依赖注入机制的一部分,仅适用于FastAPI 路由函数或由 FastAPI 调用的依赖函数中。在类初始化、模块…...
uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)
完成了商品的添加和展示,下面的文字将继续进行商品页面的处理,主要为商品信息的修改的页面以及后天逻辑的处理。 本文主要介绍了商品信息修改页面的实现过程。首先,页面布局包括编辑和删除功能,未来还可添加上架和下架按钮。通过c…...
【MySQL】联合查询(上)
目录 一. 什么是联合查询 二. 笛卡尔积 三. 内连接查询 示例演示 四. 外连接 示例演示 五. 自连接 自连接 示例演示 一. 什么是联合查询 在之前学习的增删改查中都是对于单表进行查询,但是因为在数据库设计时需要遵循范式的要求,数据就会被拆分到多…...
Model 是 Agent 的大脑(以camel为例)
Model 是 Agent 的大脑,负责处理所有输入和输出数据。通过有效调用不同的模型,智能体可以根据任务需求执行文本分析、图像识别和复杂推理等操作。CAMEL 提供了一系列标准和可定制的接口,并与各种组件无缝集成,以赋能大语言模型&am…...
Linux条件变量
在 Linux 系统中,pthread_cond_init() 函数和条件变量(Condition Variable)是多线程编程中用于线程同步的核心机制。它们通过协调线程间的等待与通知逻辑,解决共享资源的竞争问题。以下从功能、工作机制、使用场景和注意事项等方面…...
k8s-NetworkPolicy
在 Kubernetes 中,NetworkPolicy 是一种资源对象,用于定义 Pod 之间的网络通信策略。它允许你控制哪些 Pod 可以相互通信,以及如何通信。通过使用 NetworkPolicy,可以实现更细粒度的网络访问控制,增强集群的安全性。 1…...
什么是“架构孤岛”?如何识别与整合?为什么现代企业在追求敏捷开发的同时,反而更容易陷入架构孤岛陷阱?
在现代信息技术飞速发展的时代,系统架构日益复杂,组织在构建与演进其信息系统时,面临着前所未有的挑战。然而,就在不断追求敏捷性、可扩展性与数字化创新的过程中,一个被广泛忽视却日益严峻的问题悄然浮现——“架构孤岛”。它们像岛屿一样,彼此孤立,通信不畅,数据难以…...
nfs存储IO等待,导致k8s业务系统卡慢问题处理
注:服务器配置:64C,128G,麒麟v10系统,系统磁盘使用空间(5T)均低于50%,存储磁盘iops约为800左右 发现业务系统卡慢,使用top 命令查看.系统负载较高长期保持在60以上,发现wa值的指标参数长期高于15,返现CPU用于写入磁盘IO等待的时间较高,系统的磁盘I/O压力较大. 配合开发查看日志…...
如何使用两块硬盘作为 Ubuntu24 的系统盘,实现坏掉一块不影响系统运行。
最近我想使用Ubuntu组一个NAS系统,想实现系统盘冗余,各位大佬可以给点建议吗。 Deep Seek 为了实现两块硬盘作为 Ubuntu 24 系统盘的冗余配置(RAID 1),确保一块硬盘损坏时系统仍可运行,以下是详细步骤&am…...
电子电气架构 --- 细化造车阶段流程
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...
物联网之使用Vertx实现UDP最佳实践【响应式】
小伙伴们,你们好呀,我是老寇,跟我一起学习使用Vertx实现UDP-Server 实现UDP【响应式】 Vertx-Core地址 注意 UDP是无连接的传输,这意味着您与远程客户端没有建立持续的连接。 所以,您发送和接收的数据包都要包含有…...
代码管理平台Gitlab如何通过快解析实现远程访问?
一、Gitlab功能介绍 Gitlab是被广泛使用的基于git的开源代码管理平台,用于管理、存储开发人员代码,同时可以协同开发 二、外网试用Gitlab遇到的问题 运维人员将Gitlab服务器部署在总部机房,而分公司开发人员和出差运维人员就无法访问Gitlab…...
七彩喜防摔马甲:科技守护银发安全的“隐形铠甲”
随着现代人生活方式的多样化,尤其是在户外运动和骑行等活动中,安全问题日益受到重视。 七彩喜防摔马甲,作为一款兼具防护性与舒适性的智能穿戴设备,正在改变人们对传统防护装备的认知。 创新设计 防摔马甲的设计灵感来源于人体…...
IDEA推送到gitlab,jenkins识别,然后自动发布到需要的主机
实验环境 192.168.8.100 gitlab 192.168.8.200 jenkins mvn 192.168.8.10 测试主机 默认都关闭了防火墙和setenforce 实验要求 实验在IDEA上面推送代码然后gitlab推送给jenkins,然后mvn构建,最后发布到测试主机上面 实验开始 在tomcat上安装manve…...
五、【API 开发篇(下)】:使用 Django REST Framework构建测试用例模型的 CRUD API
【API 开发篇】:使用 Django REST Framework构建测试用例模型的 CRUD API 前言第一步:增强 Serializers (序列化器) - 处理关联和选择项第二步:创建 TestCaseViewSet (视图集) - 支持过滤第三步:注册 TestCaseViewSet 到 Router第…...
IDEA推送到gitlab,jenkins识别,然后自动发布到需要的主机(流水线)
jenkins流水线 新建项目 找到流水线选择脚本 3.点击流水线语法开始编辑脚本 4.生成流水线脚本复制 5.修改脚本 6.继续添加(手打) 7.继续生成添加 8.最终脚本 9.保存测试 10.构建 11.访问主页查看是否修改...
四、【API 开发篇 (上)】:使用 Django REST Framework 构建项目与模块 CRUD API
【API 开发篇 】:使用 Django REST Framework 构建项目与模块 CRUD API 前言为什么选择 Django REST Framework (DRF)?第一步:创建 Serializers (序列化器)第二步:创建 ViewSets (视图集)第三步:配置 URLs (路由)第四步…...
vscode连接本地Ubuntu
因为在学习项目的时候,自己的云服务器性能太差一直要编译很长时间,而且总是连接失败,所以搞了一个Ubuntu25.04的系统在自己的vmare中。 其中参考了以下文章。 Ubuntu 24.04 桌面版安装指南(2025版) | 官网镜像下载启动盘制作保姆级图文教程…...
idea无法识别Maven项目
把.mvn相关都删除了 导致Idea无法识别maven项目 或者 添加导入各个模块 最后把父模块也要导入...
Redis应用--缓存
目录 一、什么是缓存 1.1 二八定律 二、使用Redis作为缓存 三、缓存的更新策略 3.1 定期更新 3.2 实时生成 四、缓存预热、缓存穿透、缓存雪崩和缓存击穿 4.1 缓存预热 4.2 缓存穿透 4.3 缓存雪崩 4.4 缓存击穿 一、什么是缓存 缓存(cache)是计算机的一个经典的概念…...
大语言模型与人工智能:技术演进、生态重构与未来挑战
目录 技术演进:从专用AI到通用智能的跃迁核心能力:LLM如何重构AI技术栈应用场景:垂直领域的技术革命生态关系:LLM与AI技术矩阵的协同演进挑战局限:智能天花板与伦理困境未来趋势:从语言理解到世界模型1. 技术演进:从专用AI到通用智能的跃迁 1.1 三次技术浪潮的跨越 #me…...
多模态大语言模型arxiv论文略读(八十六)
EVALALIGN: Supervised Fine-Tuning Multimodal LLMs with Human-Aligned Data for Evaluating Text-to-Image Models ➡️ 论文标题:EVALALIGN: Supervised Fine-Tuning Multimodal LLMs with Human-Aligned Data for Evaluating Text-to-Image Models ➡️ 论文作…...
C++--string类对象
一,引言 string类对象在于更好的处理字符串问题,为对于字符串这一类型提供更加方便的接口和运算符的重载。本片文章首先会引入auto关键字和范围for两个C11小语法。之后按照如下网站所提供的顺序经行讲解。cplusplus.com - The C Resources Networkhttps://legacy.c…...
云计算与大数据进阶 | 28、存储系统如何突破容量天花板?可扩展架构的核心技术与实践—— 分布式、弹性扩展、高可用的底层逻辑(下)
在上篇中,我们围绕存储系统可扩展架构详细探讨了基础技术原理与典型实践。然而,在实际应用场景中,存储系统面临的挑战远不止于此。随着数据规模呈指数级增长,业务需求日益复杂多变,存储系统还需不断优化升级࿰…...
Python _day31
DAY 31 文件的规范拆分和写法 今日的示例代码包含2个部分 notebook文件夹内的ipynb文件,介绍下今天的思路项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法 知识点回顾 规范的文…...
【JavaWeb】MyBatis
1 介绍 什么是MyBatis? MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。 MyBatis本是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis官网https://my…...
vue2实现【瀑布流布局】
瀑布流 1. 解释2. 形成结构和样式3. 自定义指令 1. 解释 瀑布流特征: 等宽不等高:元素宽度固定,高度根据内容自适应。错落排列:元素像瀑布一样从上到下依次填充,自动寻找最短列插入 体现:图中第一排1&…...
系统架构设计(十六):敏感点、权衡点、风险点和非风险点
术语定义 概念定义说明敏感点(Sensitivity Point)架构设计中对某个质量属性有显著影响的点,一旦改变该点,会显著影响系统的某个质量属性。风险点(Risk Point)由于架构决策带来的潜在失败风险,可…...
优化dp贪心数论
这次三个题目都来自牛客周赛93,个人觉得出的很好,收获颇多。 1.简单贪心 题目意思: 任意选定两个数字,相加之和替代两个数字中的一个,另一个抹除。求操作之后最大字典序之和 思路: 最大字典序之和&…...
详解MySQL 的 binlog,redo log,undo log
MySQL 的 binlog、redo log 和 undo log 是数据库事务处理与数据一致性的核心组件,各自承担不同的职责。 1. binlog(二进制日志) 定位:MySQL Server 层实现的逻辑日志,与存储引擎无关。作用: 主从复制&…...
SymPy|主元、重新表示、分数、约分表达式、极限、级数、ode、获取值、输出形式
SymPy 是一个 Python 的符号计算库,广泛应用于数学计算、物理建模、工程分析等领域。本文将详细介绍 SymPy 在处理主元操作、重新表示、分数、约分表达式、极限、级数、常微分方程(ODE)以及获取值和输出形式等方面的应用,通过完整…...
Java 05正则表达式
正则表达式 1.简介 一个字符串,指定一些规则,来校验其他的字符串 String s"";规则 需要进行匹配的字符串.matches(s);来判断2.字符类**(单个) [abc] String s"[ABC]"; "A".matches(s);返回true…...
IEEE 802.1Q协议下封装的VLAN数据帧格式
1.概要 802.1d定义了生成树 802.1w定义了快速生成树 802.1s定义了多生成树 802.1q定义了VLAN 2.说明 IEEE802.1q协议的作用是(生成VLAN标记)VLAN编号取值范围:0-4095,其中0和4095是保留编号,所最大值是ÿ…...
VMware三种网络配置对比
桥接模式(Bridged Mode) 核心特点: 虚拟机被视为局域网中的独立设备,直接使用物理网络适配器,需配置与宿主机同一网段的IP地址。 典型场景: 虚拟机需对外提供服务(如Web…...
再来1章linux系列-19 防火墙 iptables 双网卡主机的内核 firewall-cmd firewalld的高级规则
学习目标: 实验实验需求实验配置内容和分析 (每一个设备的每一步操作)实验结果验证其他 学习内容: 实验实验需求实验配置内容和分析 (每一个设备的每一步操作)实验结果验证其他 1.实验 2.实验需求 图…...
Word 转 HTML API 接口
Word 转 HTML API 接口 图像/转换 Word 文档转换为 HTML 文件转换 / 超高精度与还原度 文件转换 / Word。 1. 产品功能 超高精度与还原度的 HTML 文件转换;支持将 Word 文档转换为 HTML 格式;支持 .doc 和 .docx 格式;保持原始 Word 文档的…...
深入解析MATLAB codegen生成MEX文件的原理与优势
一、MATLAB codegen底层工作机制 1.1 MATLAB执行引擎的局限性 MATLAB作为解释型语言,其执行过程包含多个关键步骤: 语法解析:将.m文件代码转换为抽象语法树(AST) 类型推断:运行时动态确定变量类型 内存管理:自动处…...
PEFT简介及微调大模型DeepSeek-R1-Distill-Qwen-1.5B
🤗 PEFT(参数高效微调)是由Huggingface团队开发的开源框架,专为大型预训练模型(如GPT、LLaMA、T5等)设计,用于高效地将大型预训练模型适配到各种下游应用,而无需对模型的所有参数进行…...
Python训练营打卡 Day31
文件的规范拆分和写法 今日的示例代码包含2个部分 notebook文件夹内的ipynb文件,介绍下今天的思路项目文件夹中其他部分:拆分后的信贷项目,学习下如何拆分的,未来你看到的很多大项目都是类似的拆分方法 知识点回顾:文件…...
Google精准狙击OpenAI Codex,发布AI编程助手Jules!
自从OpenAI推出 Codex之后,Google就憋不住了,悄悄得瞄准了OpenAI的最新成果。 原计划是是打算在明天举行的Google I/O年度开发者大会上发布相关产品,但Google似乎已经一刻也等不了了。 就在昨天,谷歌正式推出了其AI编程——Ju…...
【办公类-18-04】(Python)“验血单信息”批量生成打印(学校、班级、姓名、性别)
背景说明 督导结束了,准备春游(夏游),搭档在给孩子写打卡单、心愿单,感慨“好多字都不会写了!” 此时,保健老师来发体检材料,叮嘱红色验血单的填写方法。 我觉得我的字也是一塌糊涂。我想用以前做“毕业证书”的方式,将班级幼儿信息打印在体检单上。 【办公类-18-03…...
如何使用通义灵码提高前端开发效率
工欲善其事,必先利其器。对于前端开发而言,使用VSCode已经能够极大地提高前端的开发效率了。但有了AI加持后,前端开发的效率又更上一层楼了! 本文采用的AI是通义灵码插件提供的通义千问大模型,是目前AI性能榜第一梯队…...
苍穹外卖04 新增菜品菜品分页查询删除菜品修改菜品
2-6 新增菜品 02 05-新增菜品_需求分析和设计 03 06-新增菜品_代码开发_1 文件上传接口开发: 在这一部分我们主要在于对阿里云oss的代码开发和实现 1.配置阿里云oss: alioss:endpoint: oss-cn-beijing-internal.aliyuncs.comaccess-key-id: access-ke…...
C++ 读取英伟达显卡名称、架构及算力
C++ 读取英伟达显卡名称、架构及算力 通过CUDA Runtime API获取计算能力(推荐)CUDA计算能力(Compute Capability)的版本号直接对应显卡架构(如8.6=Ampere,9.0=Hopper)。实现步骤: 1.安装依赖: 安装 NVIDIA CUDA Toolkit。确保显卡驱动支持CUDA。2. C…...
VitePress 中以中文字符结尾的字体加粗 Markdown 格式无法解析
背景 在编写vitepress项目过程中,发现了一个markdown格式解析的问题。 md文件中,以中文句号结尾的字体加粗,无法正确解析: 不只是中文句号,只要是加粗语句中以中文字符结尾,都无法被正确解析 需要将中文…...
2.前端汇总
框架 html5 html语法 css css3 css语法 框架 tailwind css 官网 JavaScript JavaScript语法 typescript 语法 nodejs 语法 vue3 官网 组件 vite 打包 vue router -路由 pinia - 状态管理 ui element plus axios - ajax 后台管理系统前端快速开发框架 …...