0

我正在使用 AmplifyJS 商店。我认为它是持久存储的一个很好的包装器。我一直在 JQuery 插件中使用它,并且效果很好。

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

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

那么,对于我的具体情况,真的有什么主要原因我不能使用window对象而不是 AmplifyJS Store 吗?!我已经考虑过该expiry功能,但我可以在几行代码中轻松构建相同的功能。

谢谢。

4

2 回答 2

3

通过 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 提供的所有东西(如我所见)都是通过为您提供与原始 localStorage 相同的 API 来支持旧浏览器(使用 cookie)。

换句话说,如果您不是针对 Netscape Navigator、Mosaic 和 IE 7,您可以忘记使用 AmplifyJS 并应用本机 localStorage API。

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

于 2013-06-14T21:37:51.417 回答
1

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

于 2013-06-14T19:30:02.633 回答