javascript - 如何在 Angular 应用程序启动之间保持 JS 对象的引用?
问题描述
我需要序列化 Angular 应用程序中的状态并在下次启动应用程序时加载它。
问题是:
状态包含引用其他应该保存的对象的对象,但是如果我尝试用它序列化它,JSON.stringify()
我会在这里和那里得到循环对象引用错误。最终,我还应该有办法与其他用户共享应用程序状态,例如通过 url 链接。
我如何解决这些问题以及如何在不丢失数据的情况下序列化引用?
提前致谢!
解决方案
除了使用 IndexedDB 之外,我能想到的唯一方法可能非常冗长。可能有更好的解决方案,但这是我的想法:
持续状态
一个非常基本的例子是:
原始对象结构
{
name: "John",
kids: [
{ name: "mike" },
{ name: "tracy" }
]
}
扁平化
{
persons: [
{ id: 1, name: "John", kids: [2,3], parent: null },
{ id: 2, name: "mike", kids: [], parent: 1 },
{ id: 3, name: "tracy", kids: [], parent: 1}
]
}
现在没有循环引用
- 对扁平化版本进行字符串化和持久化。
获取状态
- 读取持久化的数据并执行
JSON.parse()
- 重新创建原始对象结构
可能有一些工具可以帮助您解决这个问题。尝试遵守 HATEOS 或 JSON:API 的工具。
不理想,但它会工作,但有很多样板和维护
推荐阅读
- facebook-graph-api - django,如何在 Facebook 照片上标记人
- java - Hibernate @ColumnTransformer 如何设置用户定义的键
- python - 如何将标头 api 保存在全局
- python - RuntimeError: 4 维权重 96 3 11 11 的预期 4 维输入,但得到了大小为 [30, 50176] 的 2 维输入
- c# - 有没有办法将图像作为参数从 c# 发送到 python 脚本?
- html - CSS:在图像上添加徽章以查看在线/离线状态
- python - 将大字符串写入文件时出现 Python 内存错误(来源为 XML/minidom)
- python - 如何对有关系的矩阵进行分组
- docker - 如何在 Docker 容器镜像中创建 tun 接口?
- javascript - 在javascript中上传拖动的图像?