1

我正在为自学目的创建一个 TODO 列表网络应用程序。这是我第一次构建 Web 应用程序。我正在使用 JavaScript 和 PHP。我很难找到保存用户数据的最佳方法。

我的应用程序允许用户创建多个列表。TODO 列表的列表可以通过拖动每个列表进行排序。每个列表的标题也可以编辑。可以创建、编辑、删除存储在每个列表中的项目,或者可以通过拖动项目来更改它们在列表中的顺序。

我希望能够将所有这些保存在数据库中,以便用户在返回我的 Web 应用程序时准确地看到他离开的地方。我可以想到两种不同的方法。一种是在修改数据时保存数据。例如,如果项目的订单被修改,我可以检测到更改并立即保存订单。其他是允许用户编辑数据,直到他保存它。

第一种方法可能更简单,更容易实现,但我担心它可能会影响我的应用程序的性能,因为对于用户进行的每个编辑,应用程序都需要与服务器通信。第二种方法看起来很有希望,但我需要跟踪自上次保存以来用户修改了哪些内容,这样我可以通过仅发送更新的内容来最大限度地减少到服务器的数据传输。为此,我依靠自定义数据属性和全局布尔变量来指示已修改的内容。

我想要的一个功能是我希望用户在保存时继续编辑。这为第二种方法引入了更多问题。请参阅我之前提出的问题(如果允许用户在保存期间修改内容,我如何捕获要保存的内容?)。一位用户好心地给了我一个答案,它应该可以工作,但我没有在问题中写下我有自定义数据属性。这些自定义属性仍然可能不同步。

所以我的问题是:

  1. 你会推荐第一种方法而不是第二种方法吗?为什么或者为什么不?
  2. 防止自定义数据属性不同步的唯一方法可能只是在保存期间锁定我的应用程序。有没有更好的方法让我不需要锁定我的应用程序?

我仍然不是一个很有经验的程序员,我可能遗漏了一些非常明显的东西,但感谢您抽出宝贵的时间!

4

1 回答 1

2

我认为自动保存不会有任何性能问题,除非您预计每秒有数千次更新并且您的网络服务器/数据库不够快。

我会在 Javascript 中创建一个数据结构(研究如何创建 javascript 类,从学习如何使用哈希开始),它可以将所有数据保存在其属性中,并可以触发它们的 onchange 事件以通过 Ajax 请求更新。

尝试在您的 Javascrip 对象和 PHP 中的数据类/对象之间保持相同的格式(例如使用 JSON 格式),这样您在数据库中进行快速更新就不会遇到太多麻烦。您的 PHP 类应该能够读取通过 Ajax 接收到的对象的属性并相应地更新数据库。同时,它应该能够生成 Javascript 中需要用于读取/加载目的的对象。

弗朗西斯科

于 2013-04-04T02:32:51.873 回答