是否有任何教“.sync”与服务器的 Backbone.js 教程?

Posted

技术标签:

【中文标题】是否有任何教“.sync”与服务器的 Backbone.js 教程?【英文标题】:Are there any Backbone.js tutorials that teach ".sync" with the server? 【发布时间】:2012-01-07 15:52:27 【问题描述】:

我阅读了许多 Backbone.js 教程,但其中大部分都涉及静态对象。

当然,我在服务器上有数据。我想要一个教程,展示backbone.js 如何与服务器通信以获取数据、发布数据等。

这是.sync,对吧?我阅读了backbone.js 文档,但仍然不清楚如何使用此功能。

或者谁能给我举个例子?

根据:http://documentcloud.github.com/backbone/#Sync

Backbone.sync 是 Backbone 每次调用的函数 尝试读取模型或将模型保存到服务器。

但是什么时候?我把函数放在哪里?我不知道如何使用它,文档也没有给出任何示例。数据何时加载到我的模型中?我要定义什么时候……对吗?

【问题讨论】:

.sync 向服务器发送 POST 或 PUT XHR 请求,以保存客户端模型状态(或 GET 从服务器获取状态)。它有助于使用浏览器的 Web 开发人员工具查看网络流量。 所以有了 .sync,我就不用再使用 JQuery 的 .ajax() 了吗? (将数据获取到我的模型等) 如果默认的 .sync 适合您,那么,是的(它在幕后为您使用 .ajax)。如果你需要改变它的作用,那么你可能需要用一些直接使用 .ajax 的代码来替换它。 @Thilo,对不起,我只是个菜鸟。我不知道如何使用 .sync。现在,我正在使用backbone.js,我自己在随机位置使用.ajax() 从服务器(手动)获取数据。我觉得我做错了什么。 下面的第二个答案是最好的:调用model.save()时调用.sync。 【参考方案1】:

除非您打算覆盖它,否则您永远不必真正查看 .sync。对于正常使用,您可以随时简单地调用 model.save() ,这将执行 post 或 put (取决于记录是否已经存在)。如果要从后端获取数据,请使用 collection.fetch()

你当然还需要指定一个 URL,通过你的集合属性,collection.url 来完成

【讨论】:

这是答案:.sync 发生在我们调用 model.save() 时。 @Ziggy 当然,那是调用.sync 的时候,但这无助于解释被混淆并导致TIMEX 混乱的魔法。 URL 是基于模型和模型各自的集合定义的隐式。【参考方案2】:

如果您覆盖它,您可以覆盖 Backbones 本机同步功能:

Backbone.sync = function() 
  //Your custom impl here

之后,每当您在模型上调用 .save() 或在集合上调用 .fetch() 等主干函数时,都会调用此函数。您不必再关心数据传输了。

我建议查看 Backbones 源代码并查看默认同步功能是如何实现的。然后创建你自己的或采用你的服务器来支持原生功能。

【讨论】:

【参考方案3】:

它们不是免费的,但以下截屏视频都有一段关于后端工作以及如何向 Backbone 发送数据和从 Backbone 获取数据。

    Tekpub 是关于 asp.net MVC3 的 9 部分截屏视频,整个第 6 部分是关于使用主干编写管理模块来管理生产的。它展示了有关在 MVC3 中处理路由以及发送和接收数据的所有内容

    窥视代码

    http://peepcode.com/products/backbone-js 关于基本骨干的东西 http://peepcode.com/products/backbone-ii关于交互性 http://peepcode.com/products/backbone-iii 关于持久性(这是您需要服务器连接信息的第三个)。

【讨论】:

不幸的是,期待已久的本系列第三集,它涉及网络和持久性,突然切换到 Coffeescript,我认为这确实限制了它的可访问性。 是的,确实如此,但是我对coffeescript 的了解足以知道它被编译成什么......你是绝对正确的,尽管它限制了大多数javascript 爱好者的可访问性。 @sander 谢谢。为什么没有 Backbone.sync 的“免费”教程? 有教程,但这些截屏视频通常不是免费的,因为它们需要花费相当多的精力来构建,它们不仅仅是您可能从网上随机开发人员那里获得的某个功能的简单截屏视频,以上截屏是专业制作的。我不是说其他​​人不好,只是解释为什么这些是 pay2view :)。我不记得任何关于 .synch() 的真实教程或截屏视频。可能是因为有很多不同的后端实现可能,很难给出一个好的教程? @Sander,我也找到了这个教程,很不错:jamesyu.org/2011/01/27/…

以上是关于是否有任何教“.sync”与服务器的 Backbone.js 教程?的主要内容,如果未能解决你的问题,请参考以下文章

gcc __sync 内置函数和 x86

Microsoft Sync Framework 1.0 RTM发布了

Qt应用程序是否有自动垃圾回收?

Netty 的 `sync` 与 `syncUninterruptibly`

Django — async_to_sync 与 asyncio.run

Backbone.js 模型与集合