Ext.Direct VS Ext.Ajax - PullRequest
       22

Ext.Direct VS Ext.Ajax

13 голосов
/ 12 марта 2012

Каковы основные преимущества Ext.direct перед обычными вызовами Ext.ajax? Когда мне следует рассмотреть возможность использования одного над другим?

1 Ответ

13 голосов
/ 20 апреля 2012

На самом деле, это зависит от вашего бэк-энда, что вы хотите сделать, и что соответствует вашей ситуации. Вопрос, который вы задали, довольно расплывчатый, поэтому мой ответ, я боюсь, может сделать для вас только столько Лучшее, что вы можете сделать, это посмотреть на страницы API для Ext.Direct и Ext.Ajax. Ext.Direct был (в прошлый раз, когда я выглядел) очень хорошо документированным, как и .Ajax, однако .Ajax не так уж много.

Ext.Direct - я начал реализовывать это на своей последней работе, и в целом это был PITA, чтобы начать работу, однако преимущества после этого были довольно хорошими. Ext.Direct позволяет вызывать сервер для выполнения методов, определенных как API, который вы передаете Ext в форме объекта JSON. Эти методы затем предоставляются вашему приложению:

 // 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 с обеих сторон, а на странице примеров и демонстраций есть примеры обоих.

...