首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将window对象用于会话存储,而不是AmplifyJS存储

将window对象用于会话存储,而不是AmplifyJS存储
EN

Stack Overflow用户
提问于 2013-06-15 03:21:10
回答 2查看 2.1K关注 0票数 0

我正在使用AmplifyJS商店。我认为它是一个很好的持久化存储包装器。我一直在一个JQuery插件中使用它,它工作得很好。

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

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

那么,对于我的特定环境,我不能使用window对象而不是AmplifyJS存储真的有什么主要原因吗?!我考虑过expiry特性,但我可以很容易地在几行代码中构建相同的功能。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-15 03:30:03

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

票数 1
EN

Stack Overflow用户

发布于 2013-06-15 05:37:51

window object中的HTML5 localStorage有一个非常简单的接口:

代码语言:javascript
复制
 var valueOfName = window.localStorage.getItem("name");
 window.localStorage.setItem("name", "value");

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

代码语言:javascript
复制
 var valueOfName = localStorage.getItem("name");
 localStorage.setItem("name", "val");

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

代码语言:javascript
复制
 var valueOfName = localStorage["name"];
 localStorage["name"] = "value";

就是这样!而且它在API中没有过期日期,URL字符串或其他复杂的API,这是在旧的cookies方法中发生的。AmplifyJs所提供的(正如我所看到的)是对旧浏览器(使用cookies的浏览器)的支持,它为你提供了与原始localStorage相同的API。

换句话说,如果你不是针对Netscape Navigator,Mosaic和IE7,你可以忘记使用AmplifyJS,而应用原生localStorage应用编程接口。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17115810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档