我正在使用AmplifyJS商店。我认为它是一个很好的持久化存储包装器。我一直在一个JQuery插件中使用它,它工作得很好。
不过,最近我一直在想,是否可以在window对象中使用名称空间变量来做同样的事情?!
AmplifyJS Store + JSON2.js (数据序列化所需)仅文件大小就花费了我22Kb (缩小了8KB),更不用说我不得不围绕它创建的额外支持代码。另外,我只使用了sessionStorage (即在浏览器窗口关闭后,只有在窗口处于活动状态时,我才不需要持久化)。
那么,对于我的特定环境,我不能使用window对象而不是AmplifyJS存储真的有什么主要原因吗?!我考虑过expiry特性,但我可以很容易地在几行代码中构建相同的功能。
谢谢。
发布于 2013-06-15 03:30:03
如果您实际上正在尝试保存持久数据(即使页面重新加载或用户导航离开,数据仍在那里),则不能将其存储在window对象上。当您稍后检查数据时,数据将不在那里。
发布于 2013-06-15 05:37:51
window object中的HTML5 localStorage有一个非常简单的接口:
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字符串或其他复杂的API,这是在旧的cookies方法中发生的。AmplifyJs所提供的(正如我所看到的)是对旧浏览器(使用cookies的浏览器)的支持,它为你提供了与原始localStorage相同的API。
换句话说,如果你不是针对Netscape Navigator,Mosaic和IE7,你可以忘记使用AmplifyJS,而应用原生localStorage应用编程接口。
然而,尽管有一种方法,你永远不应该依赖客户端的持久性,因为它完全依赖于本地浏览器(客户端可以简单地清除缓存,重新安装某些东西或从其他计算机登录)-使用服务器端数据库和类似的技术来保存用户信息。
https://stackoverflow.com/questions/17115810
复制相似问题