一个基于 Tauri 2 的跨平台桌面待办应用。纯前端实现,数据只存在本地,不依赖任何后端服务。
- 待办管理:添加、完成、编辑、删除,支持分类、优先级(高/中/低)、截止日期
- 筛选与搜索:全部 / 未完成 / 已完成 筛选,实时关键字搜索
- 主题:亮 / 暗主题一键切换,偏好自动记忆
- 数据导出:一键导出 JSON 备份
- 键盘快捷键:
Enter快速添加,Ctrl+N/Cmd+N聚焦输入框,Esc关闭编辑框 - 数据兼容:自动迁移旧版数据结构,升级无忧
| 层 | 技术 |
|---|---|
| 桌面外壳 | Tauri 2(Rust 后端) |
| 前端 | 原生 JavaScript + HTML + CSS,零框架、零打包器 |
| 数据 | localStorage 持久化,无网络请求 |
| 打包 | Tauri CLI,NSIS 安装包(Windows) |
npm install # 安装依赖(@tauri-apps/api、CLI)
npm run dev # 开发模式(热重载)
npm run build # 打包安装程序(输出到 src-tauri/target/release/bundle/)需要 Rust 工具链(Tauri 2 后端编译)。
src/ # 前端渲染层
├── index.html # 主页面(脚本按依赖顺序加载)
├── css/style.css # 全部样式,CSS 变量实现亮/暗主题
└── js/
├── state.js # 全局状态:todos、筛选、搜索、编辑中 id
├── constants.js # 常量:存储键、优先级排序
├── storage.js # localStorage 读写 + 旧数据迁移
├── render.js # 渲染引擎:过滤、排序、HTML 生成、统计
├── todo-crud.js # 增删改查
├── ui.js # Toast、编辑模态框
├── app.js # 事件绑定、快捷键、初始化
└── tauri-api.js # Tauri 桥接(获取平台信息)
src-tauri/ # Tauri 2(Rust)外壳
├── src/main.rs # 入口
├── tauri.conf.json # 窗口、CSP、打包配置
└── capabilities/ # 权限声明
todo-app.html # 单文件浏览器版:无需安装,浏览器打开即用
- 严格 CSP(
default-src 'self'),杜绝远程脚本注入 render.js的escapeHtml()对所有用户输入做转义,防 XSS- 前端不启用 Node 集成,所有能力通过 Tauri 权限白名单暴露