第23课:打卡小程序
进度 0/30
🔥
打卡小程序
项目三:21天习惯养成
📖知识引入
🎯需求梳理
设定目标(早起/阅读/跳绳),每天打卡一次,用「连续天数」激励坚持——打卡小程序的核心就这些。
📊数据设计
存{目标名, 总天数, 连续天数, 最后打卡日期}。四个字段撑起整个应用,好数据结构就是这么优雅。
🔥连续逻辑
打卡时判断「最后打卡日期」是不是昨天:是则连续+1,不是则归1。跨月、跨年的日期比较让AI写最稳。
💪激励设计
火焰图标+进度条+里程碑徽章(7天/21天/100天)+分享战绩卡片——让坚持变成看得见的成就。
⏰进阶功能
订阅消息提醒「今天还没打卡」、日历视图看历史、多目标管理。先把核心跑通,再一步步加!
💡
打卡核心:上次是昨天就+1,否则归1重新计数!
🔍连续打卡逻辑
checkIn() {
const last = this.data.lastDay // '2026-09-02'
const today = this.getToday() // '2026-09-03'
const yesterday = this.getYesterday()
let streak = this.data.streak
if (last === yesterday) {
streak = streak + 1 // 连上了!
} else {
streak = 1 // 断签,从头来
}
this.setData({ streak, lastDay: today })
// 别忘了存进Storage!
}连续打卡示意图:
9/1 ✅ → 9/2 ✅ → 9/3 ✅ 连续3天 🔥🔥🔥
9/1 ✅ → 9/2 ❌ → 9/3 ✅ 连续1天(中断重新算)
页面激励区: ┌──────────────┐ │ 🔥 连续打卡 7天 │ │ ███████░░░ 33% │ │ 目标:21天 │ │ [ 今日打卡 ] │ └──────────────┘
判断「昨天」的代码 最容易写错(跨月、跨年、 闰年2月29日…), 让AI写好后再让它 举3个边界例子测一测!
🎯小测验
第1题:用户昨天打过卡,今天再打卡,连续天数应该?
第2题:用户前天打过卡,昨天没打,今天打卡,连续天数?
第3题:打卡数据应该存在哪里?
📝本课知识点
- ✓目标+每日打卡+连续天数
- ✓四字段数据结构撑起应用
- ✓核心逻辑:昨天打卡则+1
- ✓火焰徽章让坚持有成就感
- ✓边界日期让AI写+测试
第23课完成!继续探索下一课吧 🚀
