使用localStorage和sessionStorage作为元素树

时间:2017-12-25 19:50:19

标签: javascript html5 local-storage session-storage

在应用程序重构期间,我最近发现localStorage和sessionStorage是键值存储,所以问题:是使用localStorage,sessionStorage作为JSON的任何JavaScript实现,还是能够通过浏览器调试工具轻松编辑它们吗? / p>

实施例: 我们为关键应用程序创建了一些值,它有像设置,连接这样的子键,它们有属性的子键。

所以,像这样轻松地互动他们:

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);
    }
}

但它有点难以阅读和使用。

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

1 个答案:

答案 0 :(得分:0)

有点晚了,但是您可以去了:大约一年前,我实现了DotStorage作为此解决方案的黑客解决方案。

它既未维护也未经过全面测试,但可以完成工作。
...我刚刚检查了仓库:请注意,您需要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));