Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有backbone.js的非RESTful后端_Rest_Backbone.js_Websocket - Fatal编程技术网

带有backbone.js的非RESTful后端

带有backbone.js的非RESTful后端,rest,backbone.js,websocket,Rest,Backbone.js,Websocket,我正在评估backbone.js是否是一个潜在的javascript库,可用于具有几个不同后端的应用程序:WebSocket、REST和生成JSON的第三方库。我读过一些观点,认为backbone.js可以很好地与RESTful后端配合使用,只要api是“按书”编写的,并且遵循适当的http措辞。有人能详细解释一下这意味着什么吗 另外,让backbone.js连接到WebSocket有多麻烦?最后,将backbone.js模型与返回JSON的函数集成是否存在任何问题?换句话说,数据模型是否总是需

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


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

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

主干网并不“关心”从何处获取集合或模型的数据。它将通过提供一个开箱即用的RESTful“ajax”解决方案来帮助您,但是如果您想使用其他的解决方案,它不会生气

这允许您查找(或编写)任何要处理服务器交互的插件。看看谷歌和Github

专门用于插座的有

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

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

全球:

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”时会发生什么。这是“按书”/“开箱即用”行为:

  • 由用户(您)触发
    fetch
    将实际的获取(ajax、套接字、本地存储,甚至是即时返回json的函数)委托给其他函数()。
    collection.sync
    中的任何函数都必须包含3个参数:
  • 操作
    创建
    (用于创建),操作:
    读取
    (用于获取),
    删除
    (用于删除),或
    更新
    (用于更新)=CRUD
  • 上下文(此变量)-如果您不知道此变量的作用,请不要担心,目前不重要
  • 选项-da magic在哪里。不过我们只关心一个选项
    • 成功:当数据“就绪”时调用的回调。这是
      collection#fetch
      感兴趣的回调,因为此时它接管并完成它的任务。唯一的要求是
      sync
      将以下第一个参数传递给它
    • 响应
      :返回的实际数据
  • 现在 必须在其选项中返回一个成功回调,该回调在获取数据后执行。它所负责的功能是
  • 每当
    collection#sync
    完成它的工作时,
    collection#fetch
    就会重新接管(将回调传递给success),并执行以下漂亮的步骤:
  • 调用
    set
    reset
    (出于这些目的,它们大致相同)
  • set
    完成时,它会在向世界广播的集合中触发一个
    sync
    事件“哟,我准备好了!!”
  • 那么在
    集合中会发生什么呢。一大堆东西(重复数据消除、解析、排序、解析、删除、创建模型、传播更改和一般维护)。别担心。它有效;)你需要担心的是,你如何才能融入到这个过程的不同部分。你唯一应该担心的两个问题(如果你以奇怪的方式包装数据的话)是
    
  • 用于分析集合。应该接受来自服务器/ajax/websocket/function/worker/whowknowwhat的原始JSON(或任何格式),并将其转换为对象数组。接收第一个参数
    resp
    (JSON),并应发出一个变异响应以返回。简单的豌豆
  • 。与collection相同,但它接收原始对象(即,假设您迭代
    collection#parse
    )的输出,并拆分出一个“unwrapped”对象
  • 离开你的电脑去海滩,因为你完成工作的时间比你想象的要快1/100
    为了实现您想要的任何服务器系统而不是普通的“ajax请求”,您只需要知道这些

    要将主干网与WebSocket集成,请尝试