首页
/ Earthworm 项目中的课程进度保存逻辑解析

Earthworm 项目中的课程进度保存逻辑解析

2025-05-28 16:47:38作者:何将鹤

背景介绍

Earthworm 是一个在线学习平台项目,其中涉及用户课程学习进度的保存与管理。本文将深入分析该项目中关于课程进度保存的技术实现逻辑,特别是针对登录与未登录两种状态的差异化处理方案。

核心逻辑设计

未登录用户处理流程

  1. 首次访问处理
    当未登录用户首次访问主页并直接进入课程时:

    • 系统检查 localStorage 中的 activedCourseId
    • 若值为空,则默认引导用户进入第一课
    • 完成第一课后,系统自动将 activedCourseId 更新为 -1-2 格式的值
  2. 已体验用户处理
    对于已经体验过课程的未登录用户:

    • localStorage 中存在 -1-2 格式的记录时
    • 系统会弹出"需要登录"提示框
    • 尝试进入第二课时会被拦截,同样提示需要登录
  3. 登录引导机制
    系统会强制未登录用户完成注册/登录后才能继续学习:

    • 确认操作:跳转至注册页面
    • 取消操作:返回主页

已登录用户处理流程

  1. 进度自动更新
    登录用户每完成一课后:

    • 系统自动更新 localStorage 中的 activedCourseId
    • 值格式为 <userId>-<下一课id>
    • 其中 userId 为实际用户ID,不同于未登录状态的 -1
  2. 进度同步机制
    用户再次访问时:

    • 通过接口获取服务器保存的最新进度
    • 主页回车后直接进入对应课程
    • 实现本地存储与服务器数据的同步

技术实现细节

数据结构设计

activedCourseId 采用特定格式存储:

  • 未登录用户:-1-<courseId>
  • 登录用户:<userId>-<courseId>

这种设计实现了:

  1. 区分登录状态
  2. 记录当前课程
  3. 支持进度恢复

状态管理策略

系统采用分层状态管理:

  1. 本地存储层:使用 localStorage 实现快速访问
  2. 服务端同步层:登录用户数据与服务器保持同步
  3. 状态恢复层:根据存储值自动恢复学习进度

设计优势分析

  1. 无缝体验:未登录用户可快速体验,降低使用门槛
  2. 数据安全:关键进度数据在登录后同步至服务器
  3. 性能优化:本地存储提供快速响应,减少服务器请求
  4. 状态隔离:有效区分登录/未登录用户的进度处理

潜在改进方向

  1. 增加课程进度加密存储机制
  2. 实现多设备间的进度同步
  3. 添加进度异常时的恢复机制
  4. 优化未登录用户的体验引导流程

这种进度保存方案在保证基础功能的同时,为后续扩展预留了充足空间,是典型的渐进式增强设计思路的实践。

登录后查看全文
热门项目推荐
相关项目推荐