2012-03-12 21 views
13

Ext.direct比常規的Ext.ajax調用有哪些主要優點?我應該什麼時候考慮使用一個?Ext.Direct VS Ext.Ajax

+0

夫婦投票了,但沒有真正的答案:)什麼是你的服務器端?在我們的項目中,我們有微軟RIA服務和MSSQL數據庫,所以要麼使用Ajax接口......但我沒有很好的比較優點/缺點等等...... – sha 2012-03-12 15:35:03

+0

@sha我們正在運行LAMP堆棧。 – 2012-03-12 16:01:36

+0

看起來你不會在這裏得到很多答案 - 可能想在sencha論壇上發佈這個問題... – sha 2012-03-13 02:45:19

回答

13

真的,這取決於您的後端,您想要做什麼以及適合您的情況。你提出的問題相當模糊,所以我的回答只能爲你恐懼。您可以做的最好的事情是查看Ext.Direct和Ext.Ajax的API頁面。 Ext.Direct是(上次我查看的)很好的記錄,就像.Ajax,但沒有太多的.Ajax。

Ext.Direct - 我在上一份工作中開始實施這項工作,總而言之,這是一個啓動和運行的PITA,但是之後的好處非常簡潔。 Ext.Direct允許您調用服務器來執行定義爲以JSON對象的形式傳遞給Ext的API的方法。然後,這些方法都暴露給你的應用程序:

// 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' 
}); 

這家商店將要求服務器調用該方法,服務器會給店裏的響應。 AJAX:你可以做一些巧妙的事情,並具有現成的,公開的API爲您節省大量設置自定義路線的頭痛,控制器等

Ext.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頁面是一個很好的開始,示例頁面提供了兩個示例。

相關問題