Каковы основные преимущества Ext.direct для регулярных вызовов Ext.ajax? Когда я должен использовать один над другим?
Ext.Direct VS Ext.Ajax
Ответ 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 есть примеры для обоих.