Ext.Direct versus Ext.Ajax
-
12-12-2019 - |
Pergunta
Quais são as principais vantagens do Ext.direct em relação às chamadas regulares do Ext.ajax?Quando devo considerar usar um em vez do outro?
Solução
Na verdade, depende do seu back-end, do que você deseja fazer e do que se adapta à sua situação.A pergunta que você apresentou é bastante vaga, então minha resposta só pode fazer muito por você, infelizmente.A MELHOR coisa que você pode fazer é consultar as páginas da API Ext.Direct e Ext.Ajax.O Ext.Direct estava (da última vez que olhei) muito bem documentado, assim como o .Ajax, porém não há muito no .Ajax.
Ext.Direto - Comecei a implementar isso no meu último trabalho e, no geral, foi uma tarefa difícil colocá-lo em funcionamento, mas os benefícios depois foram bem legais.Ext.Direct permite chamar o servidor para executar métodos definidos como uma API que você passa para Ext na forma de um objeto JSON.Esses métodos são então expostos ao seu aplicativo:
// 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'
});
A loja pedirá ao servidor para chamar o referido método e o servidor dará a resposta à loja.Você pode fazer algumas coisas legais, e ter uma API prontamente disponível e exposta evita muita dor de cabeça ao configurar suas rotas personalizadas, controladores, etc.
Ext.Ajax O nome diz tudo:AJAX.Faz uma chamada para uma página no seu servidor e retorna a resposta.A principal diferença aqui é que isso chama uma página, não um método.A página pode fazer inúmeras coisas (e claro, o método também), mas a página é responsável pela formatação da saída - JSON, XML, etc.O lado do servidor Direto Os métodos acabarão por formatar a saída também, mas geralmente é escrito um roteador que lida com a chamada do método e a formatação da saída.Ext.Ajax é muito mais fácil de lidar, pois praticamente não requer nenhuma configuração além de ter a página na outra extremidade que lida com a solicitação AJAX, enquanto Direct requer algumas classes de back-end para lidar com roteamento, exposição de API, etc.Existem plug-ins para diferentes estruturas (Kohana, CodeIgnitor, provavelmente WordPress, etc.) e criar o seu próprio não pode ser difícil.Para ser justo, exemplo 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'
}
}
});
Espero que isso lhe dê alguma perspectiva, mas na verdade você deve entender como cada um funciona e aplicar a solução que for melhor para você e sua situação.Ler as páginas Ext API para ambos é um bom lugar para começar, e a página Samples & Demos apresenta exemplos para ambos.