我正在编写一个聊天应用程序,它变得有点复杂,因为我希望它具有交付确认、消息缓存等功能。
现在,我处理消息缓存的方式是:
用户点击对话
从服务器获取的第一批消息存储在数组内部的“块”中。
- 每个块都是一个文档片段,附加了n条消息(DOM 元素)。
- 当用户向上滚动时,更多的块(片段)被添加到数组中,因为它们是从服务器获取的。
- 当用户转到另一个对话,但随后决定加载之前加载的对话时,脚本会将所有片段附加到一个片段中,并将大片段附加到消息窗口中。
如果用户已经获取了大量消息,那么带有消息“块”的数组会如下所示:
conversation[2].chunks = [
#document-fragment,
#document-fragment,
#document-fragment
];
每个片段内部附加了大约 10 条消息。
在使用片段之前,我通过获取每条消息的 HTML 表示来使用字符串。像这样的东西:
conversation[2].chunks = [
'<span class="msg">Hey</span><span class="msg">Hey</span>...',
'<span class="msg">Bla</span><span class="msg">bla</span>...'
];
我决定使用片段,因为我发现操作每条消息更容易(通过像 fragment.getElementById 这样的操作),而不是必须使用 innerHTML 来解析字符串和操作元素。
但是,我现在质疑这是否是正确的选择,因为我不知道将片段保存在数组中是否实际上是内存密集型的,或者至少比字符串更密集。另一个缺点是现在,如果我想将片段存储在 中localStorage
,我必须将每个片段的内容转换为 HTML 字符串,当我想localStorage
与我的片段系统一起使用时,我必须转换每个 HTML 字符串回到文档片段。
使用片段似乎更自然,但现在我正在考虑返回保留 HTML 字符串。不过,这有点工作,因为我不再有旧代码了。
在这种情况下,使用片段而不是 HTML 字符串有什么好处吗?
谢谢你。