Backbone.js能够休息和本地存储吗?

LeR*_*Roy 43 javascript offline local-storage backbone.js

我一直在试验Backbone.js的本地存储模块(https://github.com/jeromegn/Backbone.localStorage).据我所知,这会使Backbone.sync超载,从而阻止主干推送到服务器(?).理想情况下,我想将我的数据传递回服务器并在线时将其保存在本地,并在离线时使用localstorage(你知道,完美的应用程序).我还没有找到任何文件.

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

谢谢.

Ray*_*nos 45

Backbone.localStorage是一个可以使用的外部文件,它会覆盖Backbone.Sync.

您可以使用简单的功能检测来确定用户是脱机还是联机,然后在脱机时异步加载Backbone.localStorage.js.

如果需要,您还可以将特定版本传递Backbone.sync给您的模型和集合.

如果你想同时做两件事,你必须编写自己的Backbone.sync版本,它们都调用服务器并调用localStorage.

最简单的方法是定义

Backbone.sync = function() {
    originalSync.apply(this, arguments);
    localStorageSync.apply(this, arguments);
}
Run Code Online (Sandbox Code Playgroud)

编辑:

如评论中所述,如果您使用最新的骨干localStorage插件,则可以执行以下操作

Backbone.sync = function Sync() {
    Backbone.ajaxSync.apply(this, arguments);
    return Backbone.localSync.apply(this, arguments);
};
Run Code Online (Sandbox Code Playgroud)

  • 作为@ pat的注释的后续内容,[pull request](https://github.com/jeromegn/Backbone.localStorage/pull/9)在2011-12-28被接受.使用localstorage插件时,`Backbone.sync`存储到本地存储,而`Backbone.ajaxSync`使用本机`Backbone.sync`. (5认同)
  • @LeRoy没有,但在`originalSync`周围进行了一些功能检测,以检查你的在线是否有意义.还要确保真正的服务器更加"真实",然后是离线存储服务器.并设置一个系统来监控脱机时所做的更改,并将它们作为批处理推送到服务器. (2认同)
  • 可能值得注意的是,github repo中有一些具有类似目标的插件请求:[1](https://github.com/jeromegn/Backbone.localStorage/pull/9)涉及保持对例如,原来的`Backbone.sync`为`Backbone.ajaxSync`. (2认同)