gpt4 book ai didi

rest - 带有backbone.js 的非RESTful 后端

转载 作者:行者123 更新时间:2023-12-02 08:33:04 24 4
gpt4 key购买 nike

我正在评估backbone.js 作为一个潜在的javascript 库,用于具有几个不同后端的应用程序:WebSocket、REST 和生成JSON 的第3 方库。我读过一些观点,只要 api 是“按书本”并遵循适当的 http 措辞,backbone.js 就可以很好地与 RESTful 后端配合使用。有人可以详细说明这意味着什么吗?

另外,让backbone.js 连接到WebSockets 有多麻烦?最后,将backbone.js 模型与返回JSON 的函数集成是否存在任何问题——换句话说,数据模型是否总是需要通过REST 提供?

最佳答案

Backbone 的强大之处在于它具有令人难以置信的灵活和模块化结构。这意味着您可以使用、扩展、取出或修改 Backbone 的任何部分。这包括 AJAX 功能。

Backbone 并不“关心”您从哪里获取集合或模型的数据。它将通过提供开箱即用的 RESTful “ajax” 解决方案来帮助您,但如果您想使用其他东西,它也不会生气!

这使您可以找到(或编写)您想要处理服务器交互的任何插件。看看backplug.io 、谷歌和 Github。

专门针对套接字有 backbone.iobind .

找不到插件,不用担心。我可以准确地告诉你如何写一个(它比听起来容易 100 倍)。

您需要了解的第一件事是覆盖行为非常容易。主要有2种方式:

在全局范围内:

Backbone.Collection.prototype.sync = function() { 
//screw you Backbone!!! You're completely useless I am doing my own thing
}

每个实例
var MySpecialCollection = Backbone.Collection.extend({
sync: function() {
//I like what you're doing with the ajax thing... Clever clever ;)
// But for a few collections I wanna do it my way. That cool?
});

您唯一需要知道的另一件事是当您在集合上调用“fetch”时会发生什么。这是“按书本”/“开箱即用”行为:
  • collection#fetch 由用户 (YOU) 触发。 fetch将实际获取(ajax、套接字、本地存储,甚至是立即返回 json 的函数)委托(delegate)给其他函数( collection#sync )。 collection.sync 中的任何功能必须有 3 个参数:
  • 行动 : create (用于创建),操作:read (用于获取),delete (用于删除),或 update (用于更新)= CRUD。
  • 上下文 (这个变量) - 如果你不知道它是做什么的,别担心,现在不重要
  • 选项 - 魔法在哪里。我们只关心 1 个选项
  • 成功:当数据“准备好”时调用的回调。这是 collection#fetch 的回调感兴趣,因为那是它接管并做它的事情的时候。唯一的要求是 sync将以下第一个参数
  • 传递给它
  • response : 返回的实际数据
  • 现在
    必须在完成获取数据后执行的选项中返回成功回调。它负责的功能是
  • 每当collection#sync完成了它的事情,collection#fetch接管(将该回调传入成功)并执行以下漂亮步骤:
  • 调用setreset (出于这些目的,它们大致相同)。
  • set完成,它会触发 sync向全世界广播收集的事件“哟我准备好了!”
  • 那么 set 中会发生什么? .好一堆东西(重复数据删除、解析、排序、解析、删除、创建模型、传播更改和一般维护)。别担心。它有效;)您需要担心的是如何连接到此过程的不同部分。您应该担心的唯一两个(如果您以奇怪的方式包装数据)是
  • collection#parse 用于解析集合。应该接受来自 server/ajax/websocket/function/worker/whoknowwhat 的原始 JSON(或任何格式)并将其转换为对象数组。接受第一个参数 resp (JSON)并且应该吐出一个变异的响应来返回。十分简单。
  • model#parse .与集合相同,但它接受原始对象(即假设您遍历 collection#parse 的输出)并拆分出一个“未包装”对象。
  • 放下你的电脑去海滩,因为你完成了你认为需要花费的 1/100 的工作。

  • 这就是您需要知道的所有内容,以便实现您想要的任何服务器系统来代替普通的“ajax 请求”。

    关于rest - 带有backbone.js 的非RESTful 后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770250/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com