Ext JS 採用「前後端分離」架構,前端通過 AJAX/Store 與後端交互,後端只需提供標準 JSON 接口。本文以簡單 CMS 為例,詳細闡述如何將後端從 .NET (C#) 遷移至 Java、PHP 等任意語言,核心在於統一數據交換協議與路由映射。
Ext JS 應用中,客戶端腳本(Scripts/ 目錄)與後端語言零耦合。只需將入口頁面(如 index.cshtml)改寫為目標語言模板(index.jsp、index.php),其餘 JS 文件直接復制即可使用。
| 方式 | Ext JS 組件 | 提交格式 | 後端處理要點 |
|---|---|---|---|
| 表單提交 | FormPanel.submit() | application/x-www-form-urlencoded | 同普通表單,按字段名取值 |
| AJAX 提交 | Ext.Ajax.request() | JSON 或 urlencoded | 解析請求體 JSON,按約定字段處理 |
| Store 同步 | Store.sync() (配合 Writer) | JSON: {data: [{...}, {...}]} | 解析 data 數組,批量增刪改,返回統一格式 |
後端必須返回固定結構,Ext JS 才能正常驅動 UI 反饋:
{
"success": false,
"errors": {
"username": "用戶名已存在",
"email": "郵箱格式不正確"
}
}
{
"success": true,
"total": 100,
"data": [...],
"msg": "操作成功"
}
api 或 proxy.url 對應後端 Controller/Action。BaseController)。
// PHP 示例:基類中統一權限檢查
class BaseController {
protected function checkPermission($resource, $action) {
if (!$this->currentUser->can($resource, $action)) {
$this->jsonResponse(false, null, '權限不足:' . $resource . ':' . $action);
}
}
protected function jsonResponse($success, $data = null, $msg = '', $total = 0) {
header('Content-Type: application/json; charset=utf-8');
echo json_encode(compact('success', 'total', 'data', 'msg'));
exit;
}
}
若使用 Ext.Direct,前端調用映射為後端類方法,遷移時只需實現同名類與方法,無需修改任何前端代碼,實現真正的「零修改遷移」。
後端語言遷移的本質是 HTTP 接口契約的保持。只要 Ext JS 前端發送的請求格式、URL、參數名不變,後端返回的 JSON 結構、狀態碼、錯誤碼完全一致,遷移對前端完全透明。建議制定《前後端接口協議文檔》,作為雙方開發與測試的唯一標準。