🐵指尖猴全新升级
第23课:打卡小程序
🔥

打卡小程序

项目三: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课完成!继续探索下一课吧 🚀