Ext.Direct VS Ext.Ajax

时间:2012-03-12 13:43:47

标签: ajax extjs ext-direct

Ext.direct与常规Ext.ajax调用相比有哪些主要优势?我应该何时考虑使用其中一个?

1 个答案:

答案 0 :(得分:13)

真的,这取决于你的后端,你想做什么,以及适合你的情况。你提出的问题相当模糊,所以我的答案只能为你做那么多我害怕。您可以做的最好的事情是查看Ext.Direct和Ext.Ajax的API页面。 Ext.Direct是(我上次看过)非常好的记录,然而.Ajax却没有太多记录.Ajax。

Ext.Direct - 我在上一份工作中开始实现这一点,总而言之,它是一个PITA来启动和运行,但之后的好处非常简洁。 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等。服务器端直接方法将最终格式化输出也是,但通常编写一个处理方法调用和输出格式的路由器。 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页面是一个很好的起点,而样本&演示页面提供了两者的示例。