我想知道是否可以在客户端存储/恢复Ember.TEMPLATES
缓存对象localStorage
?
我想这样做的原因是因为我一开始并没有向客户端发送整堆预编译模板,而是从后端服务器“按需”加载它们。现在,如果用户决定重新加载浏览器,我想保存/恢复整个Ember.TEMPLATES
对象,以便客户端不需要再次查询后端服务器以获取已请求的模板文件。
我可以localStorage
使用以下函数将模板存储在其中,但我想它根本不漂亮(或性能优化):
saveCacheToLocalStorage: function() {
var stringifiedCache = "{ ";
for(var tmpl in Ember.TEMPLATES) {
stringifiedCache += JSON.stringify({name: tmpl, template: Ember.TEMPLATES[tmpl].toString()});
}
stringifiedCache += " }";
localStorage.setItem(this.localStorageId, stringifiedCache);
this.hasChanged = false;
return true;
}
但是如果我尝试从localStorage
它解析字符串化的值,它会因为Syntax Error: Unexpected token: {
. 我的问题有更好的解决方案吗?
一开始我无法提供所有预编译的模板,因为 Web 应用程序的用户访问不同的区域并使用 Web 应用程序的不同功能,因此向每个用户提供全套模板是不可接受的。
编辑
我的脚本中有一些错误,现在我可以localStorage
在localStorage
. 不知何故,我无法从Ember.TEMPLATES
自身获取模板,因为我总是得到相同的功能作为回报,这是非常没用的(一些关于弃用警告的一般内容等)。