Extjs 4.x proxy设计思想解读

11 篇文章 0 订阅

Proxy被设计用来为Store装载和保存Model类型的数据。所以Proxy需要持有一个Model。

数据可以保存在服务器端也可以保存在客户端,而使用者Store并不关心这个,所以Proxy提供了通用的访问接口CRUD。

reader和writer这两个类被用来解析服务器端返回的数据和格式化向服务器端发送的数据,对于保存在客户端的数据来说不需要writer对数据进行格式化所以这个类可以由Proxy的服务器端通信子类Server来持有。由于Model是Proxy所持有的,放把Model放到Proxy中时需要将Model也传给reader和writer所以讲这个方法也放入到Proxy中。

此外批量发送请求对于客户端和服务器端请求都是需要的所以Proxy持有这个方法。

另外还需要提一提的是当reader有onMetaChange这个方法的时候会先执行这个方法然后调用Proxy的onMetaChange,触发metachange事件,通知Model被修改了。


简单提一下客户端数据保存这块,Client作为Proxy的子类,定义了一个属性用来标识使用同步方法访问,还定义了一个抽象方法从来清除客户端数据,要求子类实现。

Client的子类有两个

Ext.data.proxy.Memory:简单的使用变量来存储数据,所以页面刷新后数据会丢失。

Ext.data.proxy.LocalStorage :使用html5的localStorage API 来存储数据

Ext.data.proxy.SessionStorage :使用HTML5 session storage 来存储数据


Server 作为Proxy的子类,被设计用来向服务器端发送数据。

主要实现了构造发送到服务器端参数,处理服务器端的返回结果。以及通过代理模式以相同的方式来处理CRUD这四个方法。

Server的子类有三个

Ext.data.proxy.Ajax         使用Json方式向服务器端发送数据和接收数据
Ext.data.proxy.Direct      通过Ajax使得客户端可以直接调用服务器端的方法。还提供了轮询方式向服务器端发送请求。
Ext.data.proxy.JsonP     可以跨域向服务器端发送请求



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值