我正在编写自定义HTML编辑器。用户可以编辑整个HTML内容,更改将在DOM中更新。我们可以选择撤消所有更改。
逻辑:
在进行更改之前克隆整个容器并再次应用它。
缺点:
在js内存中存储一个巨大的变量。
再次应用这些更改后,dom将重新绘制所有内容。
有没有办法实现同样的目标?。
答案 0 :(得分:3)
你的问题非常有用。我不知道处理这种情况的最佳方法是什么,但我知道在这种情况下可以使用Command Design Pattern。使用命令设计模式,您可以撤消已保存在程序中的事件。据我所知,使用Command Design Pattern的技巧是,当你需要撤消某些东西时,你需要有相反的功能。例如,如果需要撤消添加功能结果,则需要具有减法功能。对于绘图功能,您需要具有清除/擦除功能。这是JavaScript example。
答案 1 :(得分:0)
您可以尝试使用一些压缩来减少内存量:
答案 2 :(得分:0)
使用网络存储保存DOM历史记录。
想象一下,你想要撤消最后执行的三个动作。您不应该将其保存在内存中,因为您可能会丢失有关页面刷新的信息。你真的不知道这个动作是否会被用来保存在记忆中。
您可以使用带有数据压缩功能的网络存储空间来保存最少量的数据。