SuperAPI AI 工具集

vue-composables

前端与建站

查看项目

更新于 10-15 21:41

技能介绍

用途:整理在 Nuxt 4 中编写 Vue 3 组合式函数(composables)的模式,重点是可结合 localStorage 做本地持久化的响应式状态管理,并给出 useProgress、useQuiz、useCertificate 三个完整示例。适用于在 app/composables/ 目录下新建组合式函数、处理响应式状态、实现本地存储持久化,或参考学习进度、测验与证书相关实现。

主要能力:目录约定为 app/composables/ 下放置 useProgress.ts、useQuiz.ts、useCertificate.ts。useProgress 使用 Nuxt 的 useState 提供跨组件、SSR 安全的进度状态,包含读取/写入 localStorage、初始化默认结构、标记子主题完成、记录测验分数、判断是否完成、统计完成数量、导出/导入与重置进度。useQuiz 接收 Quiz 或 Ref,管理当前题目索引、答案、完成状态与分数,支持单选、多选、判断等题型判分,提供上一题、下一题、跳题、提交答案、完成测验与重置。useCertificate 负责生成证书编号、按完成课时估算小时数,并在客户端用 html2canvas 与 jsPDF 动态导入生成 PDF 及下载。

使用方式:遵循模板结构,用 ref 保存私有状态、computed 派生值、函数作为动作,返回时用 readonly() 暴露状态以防外部误改。localStorage 访问前检查 typeof window,并用 try/catch 包裹。跨组件共享状态用 useState;数据获取用 useAsyncData;浏览器专用库(html2canvas、jsPDF)通过动态 import 加载。

适用场景:Nuxt 4 学习类应用、需要本地保存进度的前端项目,以及需要生成证书 PDF 的场景。

限制:示例中部分逻辑为占位实现,例如 isComplete 对整阶段/整主题的校验未接入路线图数据、证书小时数按每课时约 15 分钟估算。localStorage 仅在客户端可用,SSR 时不可读取;PDF 生成依赖浏览器 DOM 与第三方库;错误处理与配额、隐私模式等异常需自行完善。