На самом деле, это зависит от вашего бэк-энда, что вы хотите сделать, и что соответствует вашей ситуации. Вопрос, который вы задали, довольно расплывчатый, поэтому мой ответ, я боюсь, может сделать для вас только столько Лучшее, что вы можете сделать, это посмотреть на страницы 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 с обеих сторон, а на странице примеров и демонстраций есть примеры обоих.