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 吗?的主要内容,如果未能解决你的问题,请参考以下文章

带有 Rest API 的 Backbone.js

django 和backbone.js 问题

用于 Restful 后端的 Ember.js 或 Backbone.js [关闭]

Backbone.js:在视图之间导航 - 销毁和重新创建

在 Backbone.js 中使用 localStorage

Backbone.js 仅在 IE7 中导致错误