javascript - 使用 localStorage 和 sessionStorage 作为元素树

标签 javascript html local-storage session-storage

在应用程序重构期间,我最近发现 localStorage 和 sessionStorage 是键值存储,所以问题:是否有任何 JavaScript 实现将 localStorage、sessionStorage 用作 JSON,并保持通过浏览器调试工具轻松编辑它们的能力?

例子: 我们为关键应用程序创建一些值,它有设置、连接等子键,它们有属性子键。

所以,像这样与他们互动的简单方法:

if (localStorage.application.connection.URI.slice(0, 5) === "https") { ... }

并且,如果我们需要销毁属性的分支并重新初始化它们:

localStorage.application.connection = undefined;

有什么办法吗?我知道,我可以用

if (localStorage.getItem("application.connection.URI").slice(0, 5) === "https") { ... }

并且(感谢这个答案How to remove localStorage data starting with a certain string?)

for (key in localStorage) {
    if (key.substring(0,22) == 'application.connection') {
        localStorage.removeItem(key);
    }
}

但阅读和使用起来有点困难。

有什么建议吗?对不起我的英语。

最佳答案

有点晚了,但你开始吧:我实现了 DotStorage作为大约一年前的 hacky 解决方案。

它既没有维护也没有经过全面测试,但它完成了工作。
...我刚刚检查了 repo 协议(protocol):请注意您需要 pako为了这个工作....

不要将它用于大事,因为这是通过在代理中自动包装对象及其属性来实现的 - 通过捕获所有内容来实现深度变化检测。

用法:与任何其他 Javascript 对象一样,它只是持久的:

dotStorage.Hello = "World";
// reload page
console.assert(dotStorage.Hello == "World");


你可以看看我的基于 JSFiddle 的测试文件 here

示例:

var myObj = {"New": "object"};

// save the object
dotStorage.refTest = myObj;

// get proxified instance
myObj = dotStorage.refTest;

// change nested properties
myObj.New = {"nested": {"otherObject": [0, 1]}};
console.log(JSON.stringify(dotStorage.refTest.New));

// reload the page ------------------------------------------

// change more nested properties
myObj.New.nested = 2;

// everything is still there
console.log(JSON.stringify(dotStorage.refTest.New));

关于javascript - 使用 localStorage 和 sessionStorage 作为元素树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47971592/

相关文章:

javascript - AngularJS 过滤器数据绑定(bind)

javascript - 获取 iframe 中元素的 Y 位置

javascript - 在设置 RxJs 订阅后,是否有一种干净的方法可以立即执行函数?

html - CSS 定位

jquery - HTML5 localStorage 作为改变 CSS 的条件工具

javascript - ApiController返回Json结果无法解析,为什么数据类型:"json"不起作用?

html - 如何使我的输入在 Firefox 上与在 Chrome 上保持一致?

php - 在下拉选择中自动提交表单*无需*单击提交按钮? AJAX/PHP

javascript - 如何在设置本地存储之前设置预定义 key ?

javascript - 针对爬虫和机器人的 HTML 5 存储