Backbone.js 能够做 rest 和 localstorage 吗?
Posted
技术标签:
【中文标题】Backbone.js 能够做 rest 和 localstorage 吗?【英文标题】:Backbone.js able to do rest and localstorage? 【发布时间】:2011-08-11 07:21:28 【问题描述】:我一直在试验 Backbone.js (https://github.com/jeromegn/Backbone.localStorage) 的 localstorage 模块。据我了解,这会使 Backbone.sync 过载,因此会阻止骨干网推送到服务器(?)。理想情况下,我也想将我的数据传回服务器,并在联机时将其保存在本地,而在脱机时仅使用 localstorage(你知道,完美的应用程序)。我还没有找到任何文档。
Backbone.localStorage 是其中的一部分吗? 有没有人能够构建这个场景? 这是怎么做到的? (请告诉我,我不必自己动手。)
谢谢。
【问题讨论】:
【参考方案1】:Backbone.localStorage 是一个可以覆盖 Backbone.Sync 的外部文件。
您可以使用简单的特征检测来判断用户是离线还是在线,然后在他们离线时异步加载 Backbone.localStorage.js。
如果需要,您还可以将特定版本的 Backbone.sync
传递给您的模型和集合。
如果您想同时执行这两项操作,则必须编写自己的 Backbone.sync 版本,该版本既调用服务器又调用 localStorage。
最简单的方法就是定义
Backbone.sync = function()
originalSync.apply(this, arguments);
localStorageSync.apply(this, arguments);
编辑:
如cmets中所述,如果您使用最新的主干localStorage plugin,那么您可以执行以下操作
Backbone.sync = function Sync()
Backbone.ajaxSync.apply(this, arguments);
return Backbone.localSync.apply(this, arguments);
;
【讨论】:
这是有道理的。我认为拥有两者然后在离线时删除原件是最有意义的(感谢包含它)。您对这些场景有任何亲身经历吗? @LeRoy 没有,但在originalSync
周围进行了一些功能检测,以检查您的在线是否有意义。还要确保使真实服务器比离线存储更“权威”。并放置一个系统来监控离线时所做的更改,并将它们作为批处理推送到服务器。
有没有我可以同时参考本地存储+离线同步的示例应用程序。
可能值得注意的是,该插件的 github 存储库中有几个拉取请求具有相似的目标:one 涉及将原始 Backbone.sync
的引用保留为 Backbone.ajaxSync
,用于实例。
作为@pat 注释的后续,pull request 于 2011 年 12 月 28 日被接受。使用 localstorage 插件时,Backbone.sync
存储到本地存储,而Backbone.ajaxSync
使用原生的Backbone.sync
。以上是关于Backbone.js 能够做 rest 和 localstorage 吗?的主要内容,如果未能解决你的问题,请参考以下文章
用于 Restful 后端的 Ember.js 或 Backbone.js [关闭]