use*_*636 2 rest websocket backbone.js
我正在评估backbone.js作为一个潜在的JavaScript库,用于一个应用程序,它将有一些不同的后端:WebSocket,REST和第三方库生成JSON.我已经阅读了一些意见,即只要api是"按书"并且遵循相应的http verbage,backbone.js就可以与RESTful后端一起工作.有人可以详细说明这意味着什么吗?
另外,让backbone.js连接到WebSockets有多麻烦?最后,将backbone.js模型与返回JSON的函数集成是否有任何问题 - 换句话说,数据模型是否总是需要通过REST提供?
Backbone的强大之处在于它具有令人难以置信的灵活性和模块化结构.这意味着您可以使用,扩展,取出或修改Backbone的任何部分.这包括AJAX功能.
Backbone不"关心"您从何处获取集合或模型的数据.它将通过提供开箱即用的RESTful"ajax"解决方案来帮助您,但如果您想使用其他东西,它不会生气!
这允许您查找(或编写)您想要处理服务器交互的任何插件.只需查看backplug.io,Google和Github即可.
特别是对于Sockets,有backbone.iobind.
找不到插件,不用担心.我可以准确地告诉你如何写一个(它比声音容易100倍).
您需要了解的第一件事是覆盖行为非常容易.主要有两种方式:
全球:
Backbone.Collection.prototype.sync = function() {
//screw you Backbone!!! You're completely useless I am doing my own thing
}
Run Code Online (Sandbox Code Playgroud)
每个实例
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?
});
Run Code Online (Sandbox Code Playgroud)
而你唯一需要知道的是当你在集合上调用"fetch"时会发生什么.这是"按书"/"开箱即用行为"的行为:
collection#fetch
由用户(你)触发.fetch
将委托ACTUAL获取(ajax,套接字,本地存储,甚至是立即返回json的函数)到其他函数(collection#sync
).无论函数是什么collection.sync
,都必须采用3个参数:
create
用于创建),action :( read
用于获取),delete
(用于删除)或 update
(用于更新)= CRUD.collection#fetch
对它感兴趣的回调,因为那是它接管的时候并且是它的事情.唯一的要求是sync
传递以下第一个参数response
:它回来的实际数据 collection#sync
完成它的事情,collection#fetch
收回(将回调传递给成功)并执行以下漂亮的步骤:
set
或reset
(为了这些目的,它们大致相同).set
结束时,会触发sync
该集合广播到世界事件"哟,我已经准备好了!"set
.很多东西(重复数据删除,解析,排序,解析,删除,创建模型,传播更改和一般维护).别担心.它有效;)你需要担心的是你如何能够进入这个过程的不同部分.你应该担心的唯一两个(如果你用奇怪的方式包装数据)
collection#parse
用于解析集合.应该接受来自server/ajax/websocket/function/worker/whoknowwhat的原始JSON(或任何格式)并将其转换为对象的ARRAY.接受第一个参数resp
(JSON)并且应该为返回吐出一个变异的响应.十分简单.model#parse
.与集合相同,但它接收原始对象(即想象您迭代输出collection#parse
)并拆分"未包装"对象.这就是您需要知道的所有内容,以实现您想要的任何服务器系统来代替vanilla"ajax请求".
归档时间: |
|
查看次数: |
589 次 |
最近记录: |