/Todo-list

Primary LanguageJavaScript

纯前端的Todo-List

纯前端的 todo-list, 界面样式自由发挥, 响应式设计自由发挥。可以参考样式设计。

可以使用原生 js、Vue、React, 任何 ui 库、动画库等等。

要求

  • 数据能够增删改查, 本地持久化存储。
  • 允许新建多个 list, 每个 list 包含多个 todo, 且list 允许重命名
  • todo 至少包含未完成, 执行中, 已完成三种状态。并且需要按照状态分组。

加分项

  • 使用 IndexedDB 来进行持久化存储。
  • 使用相关 mock AYE (如 mockjs,msw 等) 在浏览器里模拟后端,并通过相关 网络请求接口/库 来模拟前后端 交互流程

完成情况介绍

10.1从零开始学习, 配合ChatGPT快速迭代升级, 使用原生JS开发, 完成了包括附加功能的所有功能, 并额外增加了一些加强用户交互体验的小设计。(样式不那么好看但真的尽力了)

开发/测试环境介绍

  1. VsCode (没有用插件(我也不知道有啥插件能用), 所以其实是高亮记事本+Git管理工具)
  2. ChatGPT (唯一神, 强大的学习工具, 但是不要对它提抽象需求, 气晕)
  3. Chrome (暴论: 比国内的Edge好用)

开发测试时, 直接把html拖到浏览器, 更新代码就是刷新浏览器。(总感觉这样很丑陋, 流程不太对劲, 是因为没学框架的问题吗...)

功能介绍

分为两个模块, 因为我觉得这是两个需求, 我不可能既使用IndexedDB, 又使用Mock来模拟后端吧?

Indexed的持久化存储模块

  1. 代码见Todo-indexedDB文件夹
  2. 使用: 将文件夹下的to-do.html拖到浏览器即可
  3. 介绍:
    • 第一次使用, 将自动生成IndexedDB数据库, 用户将看到默认创建的default list。后续使用会从数据库读取以前已经创建的lists。
    • 用户可以在当前列表下新建待办事项, 默认创建状态是未完成。如果待办事项太多, 会产生一个内部拖动条, 而不是全局拖动条。
    • 用户可以对已经存在的待办事项完成以下操作:
      • 修改状态。可选状态为: 未完成、执行中、已完成。小改一下颜色, 以防视觉疲劳。(样式丑一点没办法, 实在修不好)
      • 编辑内容。双击待办事项, 可以修改待办事项内容。双击修改, 多么符合操作直觉啊。
      • 删除。当鼠标指针移动到某一待办上时, 会显示删除标记, 单击可以删除本条待办。大家再也不必因为一堆显眼的删除标记而厌烦了。
      • 用户可以通过点击筛选按钮, 选择展示某一状态的所有待办。
    • 用户可以新建列表, 以分类管理待办事项。
    • 用户可以对已经存在的列表完成以下操作:
      • 编辑列表名。
      • 删除列表。永远存在至少一个列表。
      • 用户可以切换显示的列表。
    • 增加了一个统计功能, 方便用户查看当前列表待办事项状态的统计信息。

MockJS的模拟后端模块

  1. 代码见Todo-mock文件夹
  2. 使用: 将文件夹下的to-do.html拖到浏览器即可
  3. 介绍:
    • 没啥好介绍的, 该有的都有, 区别在于把数据库的交互改为使用axios获取mock模拟的虚假数据 (线上库也太酷了)

其他

  1. 代码注释含量极高, 但由于以前学的是python的pep8规范, 所以可能不符合前端开发的规范, 还请担待。
  2. CSS文件是在GPT的辅助下搞定的, JS语法还多少了解, CSS真的没辙。
  3. 框架啊框架, 我敬爱你口牙。(响应式变量的含金量, 我哭死)
  4. 拆炸弹真好玩。
  5. 饱满的热情与不惧问题的心态, 是我最珍视的财富。

可能存在的不足

  1. 可以看出, 其实每次更新都重新渲染了一次InnerHTML, 这其实是一种糟糕的做法, 因为占据了大量的资源。实际上, 如果要写的话, 也可以精细到每个操作的具体步骤, 但我个人觉得对于一个单机的应用来说, 如此投入的精力与产出就不成正比了, 因而放弃。
  2. 目前待办事项的排序是根据加入时的序号排序的, 也许会有人希望根据种类排序显示?

主要参考链接

  1. mockjs——mockjs定义、mockjs安装、mockjs使用、mockjs方法、mockjs语法、代码示例
  2. Mock的基本使用以及使用场景
  3. indexDB
  4. indexDb 使用
  5. 【前端笔记】indexDB使用简单介绍
  6. 前端本地存储数据库IndexedDB完整教程
  7. AngularJS_Todos
  8. 【前端开发】3小时手把手带你写一个 todo-list