我正在使用AmplifyJS Store。我认为这是持久存储的好包装。我一直在JQuery插件中使用它,它运行得很好。
最近,我一直想知道我是否可以在window
对象中使用命名空间变量做同样的事情?!
AmplifyJS Store + JSON2.js(数据序列化所需)仅花费我22Kb(8Kb缩小)的文件大小,更不用说我必须围绕它创建的额外支持代码。另外,我只使用sessionStorage(即在浏览器窗口关闭后我不需要持久性,只有在窗口处于活动状态时)。
那么,对于我的特定情况,我是否真的有任何主要原因无法使用window
对象而非AmplifyJS Store?我已经考虑了expiry
功能,但我可以在几行代码中轻松构建相同的功能。
感谢。
答案 0 :(得分:2)
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)
如果您实际上是在尝试保存持久数据(如果页面重新加载或用户导航时仍然存在的数据),则无法将其存储在窗口对象上。当您稍后检查时,数据将不存在。