ext.direct在常规ext.ajax呼叫中的主要优点是什么?我什么时候应该考虑使用一个超过另一个?

有帮助吗?

解决方案

真的,它取决于你的后端,你想做什么,以及什么适合你的情况。你提出了相当含糊的问题,所以我的答案只能为你害怕这么多。您可以做的最好的事情是查看ext.direct和ext.ajax的API页面。 ext.direct是(上次我看起来)很好地记录了,就像.ajax,但是对.ajax并不多。

ext.direct - 我开始在我的上一份工作中实施这个,而且所有的东西都是一个立点起来,但是在漂亮之后的好处是漂亮的。 ext.direct允许您调用服务器以执行定义为以JSON对象的形式传递给EXT的API的方法。然后将这些方法暴露于您的应用程序:

 // Server-side
 class MyDirectRouter
 {
     public function GetNames(){
        // Get some names from the database
        return $names;
     }
 }

 // Client-side - also, not sure on exact configs here so 
 // you should do your homework
 var store = Ext.create('Ext.data.DirectStore', {
   // blah blah configs
   proxy: {
       url: '/my/direct/router/GetNames',
       type: 'direct'
 });
.

商店将要求服务器调用所述方法,并且服务器将为存储响应。您可以做一些整洁的事情,并且随时可用和曝光的API为您提供了很多令人震惊的是设置自定义路由,控制器等。

ext.ajax 这个名字说明了所有:ajax。拨打您服务器上的页面并返回响应。这里的主要区别在于,这调用了一个页面,而不是一种方法。该页面可能会执行任何数量的事情(并确定该方法也可能),但页面负责格式化输出 - JSON,XML等。服务器端 Direct 方法将最终格式化输出也是如此,但通常写入路由器,处理方法的呼叫和输出格式。 ext.Ajax更容易处理,因为它需要几乎没有设置,除了处理Ajax请求的另一端的页面,而Direct需要一些后端类来处理路由,API曝光等。有插件对于不同的框架(Kohana,Codeignitor,可能是WordPress等),并且滚动自己可能是困难的。为了公平,示例ext.ajax:

// Server-side - code of /ajax.php
echo(json_encode(array(
    'DATA' => array(
        array('id' => 3, 'name' => 'john'), 
        array('id' => 4, 'name' => 'Jill')
     )
));

// Client-side
var store = Ext.create('Ext.data.Store', {
    fields: ['id', 'name'], // You should really use a model
    proxy: {
        type: 'ajax',
        url: '/ajax.php',
        reader: {
            type: 'json',
            root: 'DATA'
        }
    }
});
.

我希望这能为您提供一些观点,但真的你应该了解每个人的工作和应用最适合您和您的情况的解决方案。读取EXT API页面是一个很好的开始,以及Samples和Demos页面的示例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top