Подтвердить что ты не робот

Ext.Direct VS Ext.Ajax

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

4b9b3361

Ответ 1

В самом деле, это зависит от вашего исходного кода, того, что вы хотите сделать, и того, что подходит вашей ситуации. Вопрос, который вы представили, довольно расплывчатый, поэтому мой ответ может сделать так много для вас, я боюсь. Лучшее, что вы можете сделать, это посмотреть страницы API для Ext.Direct и Ext.Ajax. Ext.Direct был (в последний раз, когда я смотрел) очень хорошо документирован, как есть. Аякс, однако, не так много .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 для обоих - это хорошее место для начала, а на страницах Samples and Demos есть примеры для обоих.