如果您查看以下example 中包含的api.php 资源的输出,这将更有意义。
请注意,这是作为<script/> 标签加载到页面上的,即:
<script type="text/javascript" src="php/api.php"></script>
当您打开 src link 时,您会看到以下 JavaScript 正在由服务器端 PHP 生成(请参阅下面的 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 自动生成 SOAP 代理类(在 PHP/C# 或 Java 中)的方式非常相似。
就我个人而言,我认为这对我来说有点过于空灵了。大多数 API 都非常简单明了,尝试实现类似于 WSDL 的东西实际上比直接与它对话要困难得多。