使用窗口对象进行会话存储而不是AmplifyJS存储

时间:2013-06-14 19:21:10

标签: javascript session-storage amplifyjs

我正在使用AmplifyJS Store。我认为这是持久存储的好包装。我一直在JQuery插件中使用它,它运行得很好。

最近,我一直想知道我是否可以在window对象中使用命名空间变量做同样的事情?!

AmplifyJS Store + JSON2.js(数据序列化所需)仅花费我22Kb(8Kb缩小)的文件大小,更不用说我必须围绕它创建的额外支持代码。另外,我只使用sessionStorage(即在浏览器窗口关闭后我不需要持久性,只有在窗口处于活动状态时)。

那么,对于我的特定情况,我是否真的有任何主要原因无法使用window对象而非AmplifyJS Store?我已经考虑了expiry功能,但我可以在几行代码中轻松构建相同的功能。

感谢。

2 个答案:

答案 0 :(得分:2)

通过itslef在window对象中的HTML5 localStorage有一个非常简单的api:

 var valueOfName = window.localStorage.getItem("name");
 window.localStorage.setItem("name", "value");

你甚至可以省略全局窗口对象:

 var valueOfName = localStorage.getItem("name");
 localStorage.setItem("name", "val");

此外,您可以应用数组样式表示法:

 var valueOfName = localStorage["name"];
 localStorage["name"] = "value";
是的,就是这样!并且它的API中没有过期日期,URL字符串或其他复杂情况,这种情况发生在较长的cookie方法中。 AmplifyJs提供的所有内容(我可以看到)是对旧版浏览器(使用cookie)的支持,你可以使用与原始localStorage相同的API。

换句话说,如果您不是Netscape Navigator,Mosaic和IE 7的目标,您可以忘记使用AmplifyJS并应用原生localStorage API。

然而,尽管有一种方法,你绝对不应该依赖客户端持久性,因为它完全依赖于本地浏览器(客户端可以简单地清除缓存,重新安装或从其他计算机登录) - 使用服务器端用于保存用户信息的数据库和类似技术。

答案 1 :(得分:1)

如果您实际上是在尝试保存持久数据(如果页面重新加载或用户导航时仍然存在的数据),则无法将其存储在窗口对象上。当您稍后检查时,数据将不存在。