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

用 Vue 做一个轻量离线的“待办清单 + 情绪打卡”小工具

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


文章目录

    • 摘要
    • 引言
    • 整体功能设计
      • 模块划分
      • 技术选型
    • 界面原型设计
      • 首页结构
      • 情绪色彩体系(EmoColor)
    • 关键代码模块
      • IndexedDB 数据结构定义
      • 添加任务和情绪
      • 拖拽排序 + 实时保存
    • 情境场景与实际应用
      • 上班族早晨启动仪式
      • 晚上导出小结
    • QA 环节
      • Q: IndexedDB 的数据安全吗?
      • Q: 可否用这个工具做多人协同?
      • Q: 有必要用 Vue 吗?原生写更轻吧?
    • 总结

摘要

本文将带你一步步用 Vue 和 IndexedDB 构建一个融合「任务管理」与「情绪记录」的轻量小工具。它支持拖拽管理每日任务、记录情绪状态、图标标记、情绪色彩化展示,还能导出每日小结报告——更重要的是,它完全离线可用,适合放在你的浏览器书签里,随时点开就能用。

引言

我们在日常生活中常常被“待办清单”工具和“情绪日记”工具分别困扰。前者功能过重、界面复杂,后者又和任务管理脱节,无法形成完整闭环。那有没有可能,我们用一个超轻的小工具,把这两件事一次搞定?

我们来动手做一个吧——不需要注册、不依赖云端,开浏览器就能用,能做情绪打卡、任务安排,还能回顾一天的情绪波动和完成情况。

整体功能设计

模块划分

  • 任务管理:可添加、修改、删除、拖拽任务

  • 情绪记录:支持 5 种情绪打卡(开心、平静、焦虑、难过、生气)

  • 日历面板:显示每日任务 + 情绪状态(颜色小圆点)

  • 离线存储:使用 IndexedDB 保存所有数据

  • 每日小结导出:自动生成报告,支持导出 Markdown

技术选型

  • 框架:Vue 3 + Composition API

  • 状态管理:组合式响应式变量

  • 本地存储:IndexedDB(使用 idb 库简化操作)

  • 拖拽交互:SortableJS

  • 导出功能:使用 Blob 下载 Markdown 文件

界面原型设计

首页结构

  • 顶部:今天日期 + 情绪选择(图标按钮)

  • 中间:待办任务列表(支持添加、删除、拖拽排序)

  • 底部:导出今日总结按钮 + 任务完成情况统计

情绪色彩体系(EmoColor)

情绪图标背景色
开心😄#FFD700
平静😌#87CEFA
焦虑😰#FF8C00
难过😢#778899
生气😡#DC143C

关键代码模块

IndexedDB 数据结构定义

// db.js
import { openDB } from 'idb'export const dbPromise = openDB('todoMoodDB', 1, {upgrade(db) {db.createObjectStore('tasks', { keyPath: 'id', autoIncrement: true })db.createObjectStore('moods', { keyPath: 'date' })}
})

添加任务和情绪

// addTask.vue
async function addTask(content) {await dbPromise.then(db => db.add('tasks', {content,done: false,date: today()}))
}// moodSelect.vue
async function setMood(type) {await dbPromise.then(db => db.put('moods', {date: today(),type}))
}

拖拽排序 + 实时保存

// 使用 Sortable.js 实现任务拖拽并保存新顺序
import Sortable from 'sortablejs'onMounted(() => {Sortable.create(document.getElementById('taskList'), {onEnd(evt) {const updatedOrder = reorder(tasks.value, evt.oldIndex, evt.newIndex)tasks.value = updatedOrdersaveOrderToIndexedDB(updatedOrder)}})
})

情境场景与实际应用

上班族早晨启动仪式

上班前打开浏览器:

  • 一键记录今天的情绪状态

  • 添加3件今天必须完成的任务

  • 拖拽安排优先级

晚上导出小结

晚上临睡前点击「导出今日总结」按钮,系统自动导出 Markdown 文件,内容包括今日任务完成率、情绪波动记录,方便写日记、复盘。

QA 环节

Q: IndexedDB 的数据安全吗?

A: 在同一台设备上是安全的,除非用户清除浏览器缓存。不过你可以设置自动导出本地文件的功能做备份。

Q: 可否用这个工具做多人协同?

A: 当前定位是轻量离线使用。如果你想支持多人共享,可用 Service Worker + PWA 或 Firebase Firestore 做轻量云同步。

Q: 有必要用 Vue 吗?原生写更轻吧?

A: 原生也可以实现。但使用 Vue 更有利于后续扩展,比如加组件、支持周视图、多用户等。

总结

这个项目虽然小,但可以作为练习很多技术的 playground:

  • 熟悉 Vue 的组合式 API

  • 理解 IndexedDB 数据存储模型

  • 掌握拖拽交互设计

  • 探索如何把“无聊工具”做得有趣、亲切、易用

它也提醒我们:不一定非要做个大而全的 App,有时候一个“小而美”的实用页面,就能给人生活带来很大帮助。

相关文章:

用 Vue 做一个轻量离线的“待办清单 + 情绪打卡”小工具

网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...

3D Gaussian splatting 05: 代码阅读-训练整体流程

目录 3D Gaussian splatting 01: 环境搭建3D Gaussian splatting 02: 快速评估3D Gaussian splatting 03: 用户数据训练和结果查看3D Gaussian splatting 04: 代码阅读-提取相机位姿和稀疏点云3D Gaussian splatting 05: 代码阅读-训练整体流程3D Gaussian splatting 06: 代码…...

Linux——计算机网络基础

一、网络 1.概念 由若干结点和连接结点的链路组成。结点可以是计算机,交换机,路由器等。 2.互联网 多个网络连接起来就是互联网。 因特网:最大的互联网。 二、IP地址和MAC地址 1.IP地址 (1)概念 IP地址是给因…...

第2章_Excel_知识点笔记

来自: 第2章_Excel_知识点笔记 原笔记 Excel 知识点总结(第2章) Excel_2.1 知识点 基础操作 状态栏:快速查看计数/求和等数据(右键可配置)。筛选(CtrlShiftL):按条件显…...

缩量和放量指的是什么?

在股票市场中,“缩量”和“放量”是描述成交量变化的两个核心概念,它们反映了市场参与者的情绪和资金动向,对判断股价趋势有重要参考价值。以下是具体解析: 📉 一、缩量(成交量明显减少) 1. 定…...

PostgreSQL数据库备份

文章目录 pg_dump 和 pg_dumpall使用 pg_dump 备份单个数据库示例 使用 pg_dumpall 备份整个数据库集群基本用法 恢复备份恢复 pg_dump 备份恢复 pg_dumpall 备份 Tips pg_dump 和 pg_dumpall 在 PostgreSQL 中,pg_dump 和 pg_dumpall 是两个常用的备份工具&#x…...

企业级Spring MVC高级主题与实用技术讲解

企业级Spring MVC高级主题与实用技术讲解 本手册旨在为具备Spring MVC基础的初学者,系统地讲解企业级应用开发中常用的高级主题和实用技术,涵盖RESTful API、统一异常处理、拦截器、文件处理、国际化、前端集成及Spring Security基础。内容结合JavaConf…...

js-day7

JS学习之旅-day7 1.事件流1.1 事件流与两个阶段说明1.2 事件捕获1.3 事件冒泡1.4 阻止1.5 解绑事件 2. 事件委托3. 其他事件3.1 页面加载事件3.2 页面滚动事件3.3 页面尺寸事件 4. 元素尺寸与位置 1.事件流 1.1 事件流与两个阶段说明 事件流指的是事件完整执行过程中的流动路…...

【算法训练营Day04】链表part2

文章目录 两两交换链表中的节点删除链表的倒数第 N 个结点链表相交环形链表 II链表总结 两两交换链表中的节点 题目链接:24. 两两交换链表中的节点 算法逻辑: 添加一个虚拟头节点初始化一个交换指针,代表每次交换指针的后两个节点&#xff0…...

【ROS2】各种相关概念汇总解释

包含概念 ROS2自带的标准接口ament_cmake是什么? 标准接口 似乎没有一个确定的名称,就是通俗的叫做“ROS2自带的消息接口” 这些接口存放在 /opt/ros/humble/share 路径下 ament_cmake 是 ROS 2 中基于 CMake 的构建系统 系统越复杂,构…...

解决Vditor加载Markdown网页很慢的问题(Vite+JS+Vditor)

1. 引言 在上一篇文章《使用Vditor将Markdown文档渲染成网页(ViteJSVditor)》中,详细介绍了通过Vditor将Markdown格式文档渲染成Web网页的过程,并且实现了图片格式居中以及图片源更换的功能。不过,笔者发现在加载这个渲染Markdown网页的时候…...

Flowise 本地部署文档及 MCP 使用说明

一、Flowise 简介 Flowise 是一个开源的拖放式 UI 工具,用于构建自定义的 LLM 工作流程。它允许用户通过可视化界面连接不同的 AI 组件,无需编写代码即可创建复杂的 AI 应用。 二、Docker 环境安装 1. 构建 Docker 镜像 docker build -t node22-ubuntu-dev .其中Dockerfi…...

YOLO学习笔记 | 一种用于海面目标检测的多尺度YOLO算法

多尺度YOLO算法用于海面目标检测 核心挑战分析 恶劣天气:雨雾、低光照干扰图像质量波浪干扰:动态背景产生大量噪声多尺度目标:船只(大)、浮标(小)等尺度差异大目标遮挡:波浪导致目标部分遮挡算法原理 多尺度YOLO架构(基于YOLOv5改进): graph TD A[输入图像] --&g…...

鸿蒙5.0项目开发——横竖屏切换开发

横竖屏切换开发 【高心星出品】 文章目录 横竖屏切换开发运行效果窗口旋转配置module.json5的orientation字段调用窗口的setPreferredOrientation方法案例代码解析Index1页面代码:EntryAbility在module.json5的配置信息:Index页面的代码信息&#xff1…...

Triton推理服务器部署YOLOv8(onnxruntime后端和TensorRT后端)

文章目录 一、Trition推理服务器基础知识1)推理服务器设计概述2)Trition推理服务器quickstart(1)创建模型仓库(Create a model Repository)(2)启动Triton (launching triton)并验证是否正常运行(3)发送推理请求(send a inference request)3)Trition推理服务器架…...

TDengine 的 AI 应用实战——电力需求预测

作者: derekchen Demo数据集准备 我们使用公开的UTSD数据集里面的电力需求数据,作为预测算法的数据来源,基于历史数据预测未来若干小时的电力需求。数据集的采集频次为30分钟,单位与时间戳未提供。为了方便演示,按…...

NLP学习路线图(二十一): 词向量可视化与分析

在自然语言处理(NLP)的世界里,词向量(Word Embeddings)犹如一场静默的革命。它将原本离散、难以捉摸的词语,转化为稠密、富含语义的连续向量,为机器理解语言铺平了道路。然而,这些向…...

【分布式技术】KeepAlived高可用架构科普

KeepAlived高可用架构 Keepalived 架构详解一、核心架构组件二、VRRP 协议详解1. **VRRP 核心概念**2. **VRRP 工作流程**3. **VRRP 通信机制** 三、高可用架构模型四、健康检查机制五、配置文件详解配置文件关键参数说明: 六、高可用实现流程七、脑裂问题与解决方案…...

如何配置mvn镜像源为华为云

如何配置mvn镜像源为华为云 # 查找mvn 配置文件 mvn -X help:effective-settings | grep settings.xml# 配置mvn镜像源为华为云,/home/apache-maven-3.9.5/conf/settings.xml文件路径需要根据上一步中查询结果调整 cat > /home/apache-maven-3.9.5/conf/setting…...

Linux平台排查CPU占用高的进程和线程指南

基础排查工具 1. top命令 - 实时进程监控 top操作指令: 按 P:按CPU使用率排序按 1:显示每个CPU核心的使用情况按 H:切换显示线程视图按 M:按内存使用排序按 q:退出 2. htop命令 - 增强版top&#xff08…...

多模态大语言模型arxiv论文略读(105)

UnifiedMLLM: Enabling Unified Representation for Multi-modal Multi-tasks With Large Language Model ➡️ 论文标题:UnifiedMLLM: Enabling Unified Representation for Multi-modal Multi-tasks With Large Language Model ➡️ 论文作者:Zhaowei…...

简述MySQL 超大分页怎么处理 ?

针对MySQL超大分页(深度分页)的性能问题,核心优化方案如下: 1. ‌子查询 覆盖索引(延迟关联)‌ ‌原理‌: 子查询仅扫描‌覆盖索引‌(如主键),避免回表操作…...

Pyhton中的命名空间包(Namespace Package)您了解吗?

在 Python 中,命名空间包(Namespace Package) 是一种特殊的包结构,它允许将模块分散在多个独立的目录中,但这些目录在逻辑上属于同一个包命名空间。命名空间包的核心特点是:没有 __init__.py 文件&#xff…...

Java设计模式之备忘录模式详解

Java设计模式之备忘录模式详解 一、备忘录模式核心思想 核心目标:捕获对象内部状态并在需要时恢复,同时不破坏对象的封装性。如同游戏存档系统,允许玩家保存当前进度并在需要时回退到之前的状态。 二、备忘录模式类图(Mermaid&am…...

Azure DevOps Server 2022.2 补丁(Patch 5)

微软Azure DevOps Server的产品组在4月8日发布了2022.2 的第5个补丁。下载路径为:https://aka.ms/devops2022.2patch5 这个补丁的主要功能是修改了代理(Agent)二进制安装文件的下载路径;之前,微软使用这个CND(域名为vstsagentpackage.azuree…...

手摸手还原vue3中reactive的get陷阱以及receiver的作用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、实例是什么?二、new Prxoy三、实现代码1.引入代码2.读入数据 总结 前言 receiver不是为解决get陷阱而生,而是为解决Proxy中的this绑…...

小明的Java面试奇遇之互联网保险系统架构与性能优化

一、文章标题 小明的Java面试奇遇之互联网保险系统架构与性能优化🚀 二、文章标签 Java,Spring Boot,MyBatis,Redis,Kafka,JVM,多线程,互联网保险,系统架构,性能优化 三、文章概述 本文模拟了程序员小明在应聘互联网保险系统开发岗位时,参与的一场深…...

C++学习-入门到精通【13】标准库的容器和迭代器

C学习-入门到精通【13】标准库的容器和迭代器 目录 C学习-入门到精通【13】标准库的容器和迭代器一、标准模板库简介1.容器简介2.STL容器总览3.近容器4.STL容器的通用函数5.首类容器的通用typedef6.对容器元素的要求 二、迭代器简介1.使用istream_iterator输入,使用…...

C# 面向对象特性

面向对象编程的三大基本特性是:封装、继承和多态。下面将详细介绍这三大特性在C#中的体现方式。 封装 定义:把对象的数据和操作代码组合在同一个结构中,这就是对象的封装性。 体现方式: 使用访问修饰符控制成员的可见性 通过属…...

ElasticStack技术之logstash介绍

一、什么是Logstash Logstash 是 Elastic Stack(ELK Stack)中的一个开源数据处理管道工具,主要用于收集、解析、过滤和传输数据。它支持多种输入源,如文件、网络、数据库等,能够灵活地对数据进行处理,比如…...