我正试图抓住Ext.direct。在官方page上有API的描述:
Ext Direct堆栈的API组件的目的是输出Ext Direct的方法配置以创建客户端存根。通过生成这些代理方法,我们可以无缝地调用服务器端方法,就像它们是客户端方法一样,而不必担心客户端和服务器端之间的交互。
我只是不明白...... 输出Ext Direct的方法配置来创建客户端存根。有人会在基层解释这意味着什么吗?
答案 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的东西实际上使得消耗比直接与它直接交谈时要困难得多。