我正在创建一个用于自学的TODO清单Web应用程序。这是我第一次构建Web应用程序。我正在使用JavaScript和PHP。我在寻找最佳方法来保存用户数据时遇到了问题。
我的应用程序允许用户创建多个列表。TODO列表可以通过拖动每个列表进行排序。每个列表的标题也可以编辑。存储在每个列表上的项目可以通过创建、编辑、删除或拖动项目的顺序来更改。
我希望能够将所有这些保存在数据库中,以便用户回到我的Web应用程序时可以看到他离开的地方。我能想到两种不同的方法。一种是在修改时立即保存数据。例如,如果修改了项目的顺序,我可以检测到更改并立即保存顺序。另一种是允许用户在保存之前编辑数据。
第一种方法可能更简单易实现,但我担心它会影响我的应用程序性能,因为每次用户进行编辑时,应用程序都需要与服务器通信。第二种方法看起来很有前途,但我需要追踪用户自上次保存以来修改了什么,以便通过仅发送更新的内容来最小化与服务器的数据传输。为此,我依赖于自定义数据属性和全局布尔变量来指示已被修改的内容。
我想要的一个功能是,在保存时允许用户继续编辑。这会给第二种方法带来更多问题。请参见我之前提出的问题(如果在保存期间允许用户修改内容,如何捕获要保存的内容?)。一位用户友善地给了我一个答案,它应该可以解决,但我没有在问题中写明我有自定义数据属性。这些自定义属性仍然可能不同步。
所以我的问题是:
我的应用程序允许用户创建多个列表。TODO列表可以通过拖动每个列表进行排序。每个列表的标题也可以编辑。存储在每个列表上的项目可以通过创建、编辑、删除或拖动项目的顺序来更改。
我希望能够将所有这些保存在数据库中,以便用户回到我的Web应用程序时可以看到他离开的地方。我能想到两种不同的方法。一种是在修改时立即保存数据。例如,如果修改了项目的顺序,我可以检测到更改并立即保存顺序。另一种是允许用户在保存之前编辑数据。
第一种方法可能更简单易实现,但我担心它会影响我的应用程序性能,因为每次用户进行编辑时,应用程序都需要与服务器通信。第二种方法看起来很有前途,但我需要追踪用户自上次保存以来修改了什么,以便通过仅发送更新的内容来最小化与服务器的数据传输。为此,我依赖于自定义数据属性和全局布尔变量来指示已被修改的内容。
我想要的一个功能是,在保存时允许用户继续编辑。这会给第二种方法带来更多问题。请参见我之前提出的问题(如果在保存期间允许用户修改内容,如何捕获要保存的内容?)。一位用户友善地给了我一个答案,它应该可以解决,但我没有在问题中写明我有自定义数据属性。这些自定义属性仍然可能不同步。
所以我的问题是:
- 你会推荐第一种方法还是第二种方法?为什么?
- 防止自定义数据属性不同步的唯一方法可能只是在保存期间锁定我的应用程序。是否有更好的方法,以便我不需要锁定我的应用程序?
我仍然不是一个非常有经验的程序员,我可能会忽略一些非常明显的东西,但感谢您的时间!