繁体   English   中英

带有骨干.js的非RESTful后端

[英]Non-RESTful backend with backbone.js

我正在评估ribone.js作为潜在的javascript库,可在将有一些不同后端的应用程序中使用:WebSocket,REST和生成JSON的第三方库。 我已经读过一些意见,只要api是“按书”并且遵循适当的http用法,则骨干.js可以与RESTful后端完美地结合使用。 有人可以详细说明这是什么意思吗?

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

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

骨干网不会“在乎”您从何处获取集合或模型的数据。 它提供了一个现成的RESTful“ ajax”解决方案,它将为您提供帮助,但是如果您想使用其他产品,也不会发疯!

这使您可以查找(或编写)要处理服务器交互的任何插件。 只需查看backplug.io ,Google和Github。

专门用于Sockets的是ribs.iobind

找不到插件,不用担心。 我可以确切地告诉您如何编写一个(比听起来容易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?
});

您唯一需要了解的另一件事是,在集合上调用“获取”时会发生什么。 这是“借书” /“开箱即用行为”的行为:

  1. collection#fetch由用户(YOU)触发。 fetch会将ACTUAL的抓取(ajax,套接字,本地存储,甚至是一个立即返回json的函数)委托给其他一些函数( collection#sync )。 collection.sync任何函数都必须带有3个参数:
    1. 操作create (用于创建),操作: read (用于获取), delete (用于删除)或update (用于更新)= CRUD。
    2. 上下文 (此变量)-如果您不知道它的作用,请不必担心,暂时不重要
    3. 选项 -魔术在哪里。 我们只关心1个选项
      • 成功:数据“就绪”时调用的回调。 这是collection#fetch感兴趣的回调,因为那是它接管并完成任务的时间。 唯一的要求是sync将以下第一个参数传递给它
      • response :它返回的实际数据
    4. 现在必须在其选项中返回一个成功回调,该回调在完成数据获取后将被执行。 它负责的功能是
  2. 无论何时完成collection#sync操作, collection#fetch都会接管(并将该回调传递给成功)并执行以下巧妙的步骤:
    1. 呼叫setreset (出于这些目的,它们大致相同)。
    2. set完成后,它会触发向世界广播的sync事件“哟,我准备好了!”
  3. 那么set发生了什么。 一堆东​​西(去重复,解析,排序,解析,删除,创建模型,传播更改和常规维护)。 不用担心 它有效;)您需要担心的是如何挂接到该过程的不同部分。 您唯一需要担心的两个问题(如果您用怪异的方式包装数据)是
    1. collection#parse用于解析集合。 应该接受来自服务器/ ajax / websocket / function / worker / whoknowwhat的原始JSON(或任何格式)并将其转换为对象数组。 接受第一个参数resp (JSON),并应吐出变异的响应以返回。 十分简单。
    2. model#parse 与collection相同,但是它接收原始对象(即,假设您对collection#parse的输出进行迭代)并拆分出“未包装”的对象。
  4. 下车,然后去海滩,因为您完成工作的时间是预期的1/100。

这就是您要实现所需的任何服务器系统以代替原始的“ ajax请求”所需的全部知识。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM