最近在学习 JS 和 Sveltekit,练手写了一个小 TODO app,遇到一些设计上的问题想请教門友

目前实现的功能:

未登录的时候,将 todo 保存在浏览器的本地存储 IndexedDB 中,登录后,将 todo 保存在服务器端的 SQLite 数据库中。登录用的是 SSO 单点登录。

目前遇到一些问题:

  1. 登录后未把浏览器里的本地 todo 上传并合并到服务器 sqlite 里。
  2. 不同设备/浏览器上都登录,但是一个上面的修改无法自动反映在另一个浏览器上,需要在其他浏览器上进行刷新。我想知道怎样实现修改 todo 后,服务器向其他登录的设备传递消息,命令其进行更新数据的操作。或者怎样实现在后台每隔一段时间自动从服务器拉数据,检测是否最新以决定是否要刷新界面。
  3. 有些时候网络较差,而操作需要得到服务器端成功的响应才刷新界面,导致操作卡顿,怎样实现先在浏览器的 IndexedDB 里储存,在后台异步进行数据同步,并在同步成功/失败时提示。

先谢谢門友們。

这个有点点意思,我随手用你站的服务器和域名部署了一个:

https://todo.xjtu.app

4 Likes

只写过后端,来口胡一两句吧。
其实你已经把解决方案说出来了
问题 1 简单实现就是在后端记录上次同步的时间戳,同步的时候把时间戳以后的更改全发给后端就行了。
问题 2 就是后端主动向前端推流的问题,这种场景 SSE 绝对够用了
问题 3 就是把你描述的东西实现出来就可以了,因为没看你代码不知道问题出在哪里,说不定要稍微改一下流程什么的
祝顺利

2 Likes

好快的部署 :rofl:

最近对 app 做了一些改进:

  • 优化了用户界面,看起来更现代
  • 离线时可用,重新在线后自动同步数据到服务器
  • 后台定时同步数据,在其他设备上无需手动刷新,稍等几秒即可

欢迎門友加入开发,提 Issue 和 PR

本来按照我的习惯,应该列一些计划增加的功能.
但我受 Jensen Huang 不带手表影响,活在当下,不做未来的规划

5 Likes