【问题标题】:Backbone.js able to do rest and localstorage?Backbone.js 能够做 rest 和 localstorage 吗?
【发布时间】:2011-08-11 07:21:28
【问题描述】:

我一直在试验 Backbone.js (https://github.com/jeromegn/Backbone.localStorage) 的 localstorage 模块。据我了解,这会使 Backbone.sync 过载,因此会阻止骨干网推送到服务器(?)。理想情况下,我也想将我的数据传回服务器,并在联机时将其保存在本地,而在脱机时仅使用 localstorage(你知道,完美的应用程序)。我还没有找到任何文档。

Backbone.localStorage 是其中的一部分吗? 有没有人能够构建这个场景? 这是怎么做到的? (请告诉我,我不必自己动手。)

谢谢。

【问题讨论】:

    标签: javascript local-storage offline backbone.js


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2012-06-22
    • 1970-01-01
    • 2012-03-30
    • 2017-10-09
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多