Ext.direct API的说明

时间:2014-01-28 18:25:30

标签: extjs sencha-touch sencha-touch-2

我正试图抓住Ext.direct。在官方page上有API的描述:

Ext Direct堆栈的API组件的目的是输出Ext Direct的方法配置以创建客户端存根。通过生成这些代理方法,我们可以无缝地调用服务器端方法,就像它们是客户端方法一样,而不必担心客户端和服务器端之间的交互。

我只是不明白...... 输出Ext Direct的方法配置来创建客户端存根。有人会在基层解释这意味着什么吗?

1 个答案:

答案 0 :(得分:1)

如果您查看以下api.php中包含的example资源的输出,这将更有意义。

请注意,这是作为<script/>标记加载到页面上的,即:

<script type="text/javascript" src="php/api.php"></script>

当您打开src link时,您会看到服务器端PHP生成以下JavaScript(请参阅下面的javascript代码块)。

换句话说,PHP正在做的事情是 ...输出Ext Direct的方法配置以创建客户端(即JavaScript)存根。

现在,您应该问的下一个问题是:为什么要使用服务器端PHP(或其他选择的语言)来生成客户端JavaScript?

Ext.ns("Ext.app");
Ext.app.REMOTING_API={
    "url": "php\/router.php",
    "type": "remoting",
    "actions": {
        "TestAction": [{
                "name": "doEcho",
                "len": 1
            }, {
                "name": "multiply",
                "len": 1
            }, {
                "name": "getTree",
                "len": 1
            }, {
                "name": "getGrid",
                "len": 1
            }, {
                "name": "showDetails",
                "params": [
                    "firstName",
                    "lastName",
                    "age"
                ]
            }],
        "Profile": [{
                "name": "getBasicInfo",
                "len": 2
            }, {
                "name": "getPhoneInfo",
                "len": 1
            }, {
                "name": "getLocationInfo",
                "len": 1
            }, {
                "name": "updateBasicInfo",
                "len": 0,
                "formHandler": true
            }]
    }
};

这似乎模仿WSDL的工作方式,因为它可以提供服务描述并列出可用于查询的所有选项。换句话说: Ext.Direct API从SOAP中获取概念并将其应用于Javascript设置

后端包含API,因此这是生成包含所有方法名称和签名的服务定义的最简单方法。一旦提供了 Ext.Direct API 方法存根(在后端),前端 Ext.Direct 库将执行管道并将它们转换为实际功能可以在JavaScript中查询和使用。与使用WSDL自动生成(PHP/C#Java)SOAP代理类的方式大致相同。

就我个人而言,我觉得这有点过于通风了。大多数API非常直接,并且尝试实现类似于WSDL的东西实际上使得消耗比直接与它直接交谈时要困难得多。