ExtJS客户端代理

代理(proxy)分为两大类:客户端代理和服务器端代理。客户端代理主要完成与浏览器本地存取数据相关的工作,服务器端代理则是通过发送请求,从服务器端获取数据。根据各自获取数据的方式,客户端代理和服务器端代理又可以分为一下几种:

客户端代理:

  • LocalStorageProxy:将数据存储在localStorage中,此种方式可以持久的将数据存储在客户端。
  • SessionStorageProxy:将数据存储在sessionStorage中,此种方式只在当前会话中生效,当关闭浏览器以后,数据也会随之丢失。
  • MemoryProxy:将数据存储在内存中,此种方式只在当前页面有效,且如果刷新页面,数据将丢失。

服务器端代理:

  • Ajax:在当前域中发送请求
  • JsonP:跨域的请求
  • Rest:与服务器进行RESTful(GET/PUT/POST/DELETE)交互
  • Direct:使用  Ext.direct.Manager 发送请求

SessionStorageProxy 的用法与LocalStorageProxy 的用法基本一致。例如以下代码演示LocalStorageProxy 的用法:

// 首先,我们定义一个简单的Person类
Ext.define(‘Person‘, {
    extend: ‘Ext.data.Model‘,
    fields: [‘name‘, ‘age‘]
});

// 紧接着,我们还需要一个Store。我们可以把 Store 理解为数据仓库,它对应数据库中的表,而Store 包含的 Record 则是数据表中的每一行记录。实际使用中我们更多的对store进行操作。
var personStore = Ext.create("Ext.data.Store", {
    model: ‘Person‘
});

// 接下来就到我们代理出场的时候了。我们需要创建一个LocalStorageProxy:
var personProxy = new Ext.data.proxy.LocalStorage({
    id: ‘Person_LocalStorage‘,     // 建立关联后,针对model,和不同的proxy区分开
    model: ‘Person‘
});

// 建立代理与 Store 的联系
personStore.setProxy(personProxy);

// 此时我们可以针对store进行增删改查(CRUD)的操作了
personStore.add({ name: ‘www.qeefee.com‘, age: 1 });
personStore.add({ name: ‘qf‘, age: 26 });
personStore.add({ name: ‘qifei‘, age: 26 });
personStore.sync();            // 保存Search到本地数据库

  此外,我们也可以在声明数据模型的时候,同时声明代理:

// 定义数据模型,在Model中加入代理配置以后,我们就不需要单独的定义代理对象了,可以直接使用Store来对其进行操作
Ext.define(‘Person‘, {
    extend: ‘Ext.data.Model‘,
    fields: [‘name‘, ‘age‘],
    proxy: {
        type: ‘sessionstorage‘,
        id: ‘myProxyKey‘
    }
});

//定义Store
var personStore = Ext.create("Ext.data.Store", {
    model: ‘Person‘
});

//添加数据
personStore.add({ name: ‘www.qeefee.com‘, age: 1 });
personStore.add({ name: ‘qf‘, age: 26 });
personStore.add({ name: ‘qifei‘, age: 26 });
personStore.sync();

  

MemoryProxy与SessionStorageProxy 的用法和LocalStorageProxy 的用法相比略有差异。MemoryProxy 是将数据存储在内存中的,它只在当前页生效,如果关闭或刷新页面,所有数据都将丢失。在使用MemoryProxy 的时候,我们需要为Store指定一个数据集(类似于缓存),store 将通过代理对这个数据集进行操作:

//定义数据模型
Ext.define(‘Person‘, {
    extend: ‘Ext.data.Model‘,
    fields: [‘name‘, ‘age‘]
});
var data = {
    Users: [
        { name: ‘www.qeefee.com‘, age: 1 },
        { name: ‘qeefee‘, age: 1 }
    ]
}
//定义Store
var personStore = Ext.create("Ext.data.Store", {
    model: ‘Person‘,
    data: data.Users,
    proxy: {
        type: ‘memory‘
    }
});

  当personStore 定义的时候,data中预先定义的缓存就会自动的将数据加载到Store中,所以在我们访问数据的时候不需要再调用load方法了:

//读取数据
var msg = [];
personStore.each(function (person) {
    msg.push(person.get(‘name‘) + ‘ ‘ + person.get(‘age‘));
});
Ext.MessageBox.alert(‘提示‘, msg.join(‘<br />‘));

  和上两个的操作基本一致,我们可以通过下面的代码添加一行新数据:

personStore.add({ name: ‘qifei‘, age: 26 });
personStore.sync();

  

时间: 2025-01-09 14:55:12

ExtJS客户端代理的相关文章

客户端代理架构图分享

下面是我设计的一个客户端代理的架构图,主要完成以下功能: 1.异步消息通知: 2.耗时任务处理: 后端服务化是当前的趋势@!,所以在这个架构中包括一个注册中心,用于服务的动态注册和发现.以及配置信息的管理.

完美的客户端代理解决方案

背景 internet ---- server ----client 由于各种原因,client不能直接连接Internet,server可以. 通过设置代理需要在server上进行安装配置. 本文介绍不需要在server安装配置,只需要在client安装配置的解决方案. server和client之间先打通ssh. 对ssh, wget, ftp, yum都有效,以svn为例. 安装 unzip proxychains-master.zip cd proxychains-master ./co

不引用服务使用WCF,编写客户端代理类

首先在解决方案中新建一个类库TestService.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ServiceModel; namespace WCFService { [ServiceContract] public interface IHelloWCFService { [

SCCM2012 R2实战系列之六:安装客户端代理软件

在安装客户端代理软件之前,请大家确保已经对本系列的第四和第五部分有了基本了解,而且对SCCM环境做了初始化配置和发现方法.我们目前讨论的是加域的计算机,对于工作组的计算机还需要进行额外的配置.在上篇文章中,我们已经成功的发现加域计算机了,现在开始我们一起讨论下如何去推送并安装SCCM客户端代理软件. 在下图中可以看到,在设备集合"windows7"中已经发现3台计算机,其中W71已经安装过客户端代理软件的,在这里我们对设备集合"windows7"进行客户端的推送,在

Atitit 动态调用webservice与客户端代理方式调用

方式1: 使用call.invoke  直接调用WSDL,缺点:麻烦,不推荐--特别是JAVA调用.NET的WS时,会有不少的问题需要解决. 方式2: 生成测试STUB--此种方法更快捷.如果用.NET开发WS客户端,就是用的这种方式-- 客户端调用web service方法首先要使用cxf的wsdl2java命令工具生成服务代理类,如:wsdl2java -p com.charles.client http://localhost:8080/queryUser?wsdl具体命令格式可使用wsd

部署SCCM 2012R2之七:安装客户端代理&创建集合篇

由于前段时间公司事情较多,博客也好久未更新,今天就按照之前所讲的内容继续前进,在微软的产品中许多客户端都需要代理的支持,才能完成某些工作任务,如SCVMM.SCCM.SCOM都是如此,在SCCM中不管是软件分发.软件资产.硬件资产,远程控制等都需要安装SCCM的代理. 而创建集合主要是便于管理员根据某些集合而做相应的策略部署,集合主要有用户集合和设备集合.在用户集合中可以创建以OU(如IT.Sales.HR)等为单位的集合,也可以创建以区域(如上海.北京.广州)等为单位的集合,设备集合可以创建不

终于解决:升级至.NET 4.6.1后VS2015生成WCF客户端代理类的问题

在Visual Studio 2015中将一个包含WCF引用的项目的targetFramework从4.5改为4.6.1的时候,VS2015会重新生成WCF客户端代理类.如果WCF引用配置中选中了"Reuse types in referenced assemblies"(这是默认配置),生成的所有WCF客户端代理类都为空(Reference.cs文件内容为空). 这个问题在2015年4月的时候开始遇到,详见:生成WCF代理类的奇怪问题.2016年1月再次遇到,详见:.NET 4.6.

ExtJs服务器端代理(Ajax)

服务器端代理: Ajax:在当前域中发送请求 JsonP:跨域的请求 Rest:与服务器进行RESTful(GET/PUT/POST/DELETE)交互 Direct:使用  Ext.direct.Manager 发送请求 web应用程序开发过程中,与服务器端交互的技术最常用的就是Ajax了.Ajax 是使用Javascript创建一个HttpRequest,采用异步的方式从服务器获取数据. Ext.onReady(function () { // 定义数据模型 Ext.define('Pers

WCF通过SVCUtil.exe生成客户端代理类和配置文件(转)

WCF服务调用通过两种常用的方式: 1:一种是借助代码生成工具SvcUtil.exe或者添加服务引用的方式. 2:一种是通过ChannelFactory直接创建服务代理对象进行服务调用. 本文只针对通过SvcUtil.exe工具生成代理类和对应配置文件来讲 一:通过cmd命令行生成代理类和对应配置文件 1.找到如下地址“C:\Windows\System32\cmd.exe”  命令行工具,右键以管理员身份运行(视系统是否为win7 而定) 2.输入如下命令: C:\>cd C:\Program