Ramal.Directo VS Ext.Forum
Quais são as principais vantagens do Ext.directamente sobre o extracto normal.o ajax liga? Quando devo considerar usar um em vez do outro?
1 answers
Ext.Comecei a implementar isto no meu último trabalho, e tudo era uma PITA para ... levantar-se e correr, no entanto, os benefícios depois foram muito limpo. Ramal.Direct permite-lhe ligar para o servidor para executar métodos que são definidos como uma API que passa para Ext na forma de um objecto JSON. Estes métodos são então expostos à sua aplicação:
// 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 irá pedir ao servidor para ligar para o referido método e o servidor irá dar a resposta à loja. Você pode fazer algumas coisas limpas, e ter uma API prontamente disponível e exposta poupa-lhe muito da dor de cabeça de configurar o seu rotas personalizadas, controladores, etc.
Ext.Ajax o nome diz tudo: AJAX. Faz uma chamada para uma página em seu servidor e retorna a resposta. A principal diferença aqui é que isto chama uma página, não um método. A página pode fazer qualquer número de coisas( e certo, o método também pode), mas a página é responsável pela formatação da saída - JSON, XML, etc. O servidor-side Direct métodos irão finalmente formatar a saída também, mas normalmente um roteador é escrito que lida com a chamada do método e da formatação de saída. Ramal.Ajax é muito mais fácil de lidar com, pois requer virtualmente nenhuma configuração, além de ter a página na outra extremidade que lida com o pedido AJAX, enquanto o direto requer algumas classes back-end para lidar com roteamento, exposição API, etc. Existem plugins para diferentes frameworks (Kohana, CodeIgnitor, provavelmente WordPress etc) e rolar o seu próprio não pode ser difícil. Por justiça, por 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 isto te dê alguma perspectiva., mas realmente você deve entender como cada um trabalha e aplicar a solução que é melhor para você e sua situação. Ler as páginas da API Ext para ambos é um bom lugar para começar, e a página Samples & Demos apresenta exemplos para ambos.