簡體   English   中英

一個幾乎完整的基於JavaScript的Web應用程序的體系結構?

[英]An architecture for almost complete JavaScript-based web applications?

我知道MVC在PHP應用程序中廣受贊譽,但我不確定它是否適合JavaScript。 如果您有其他想法,請說明如何以及在何處處理常見方案,例如AJAX請求,數據保存(離線存儲),演示文稿,如何處理控制器邏輯(是否有前端控制器?)等等。

怎么樣模型視圖呈現?

我正在使用ExtJS,並且僅將服務器用於永久數據存儲。

如果您打算僅使用JavaScript來對UI進行編碼,則可以將PHP視為更多的Web服務API

基本上,您的View就是您在JS中編寫的Ext JS。 為了處理您的數據,Ext前端將對您的“服務”執行請求。 基本上,您將在服務器上建立一種模型控制器架構,控制器的工作是處理請求並輸出JSON(供Ext前端使用)

本質上,后端中的“視圖”將僅從json_encode輸出,然后由基於實際Ext的視圖使用。

在JS中,您可以根據正在執行的操作來設置控制器。 如果僅顯示服務器中的數據,則可能不需要太多單獨的邏輯。 如果您要進行一些更復雜的處理,將代碼分成單獨的控制器和視圖可能會很有用。

這主要取決於您要分離多少邏輯。

在編寫幾乎完整的javascript應用程序時,您可以將MVC視為:

  • 查看:DOM
  • 控制器:您的JavaScript
  • 模型:JavaScript Ajax調用和它們的PHP(或任何其他)后端對應對象的組合

PureMVC是一個非常酷的MVC框架。 你應該檢查一下。

我使用的是相同的體系結構:主要是在PHP后端之上的ExtJS。

我的解決方案:

  • 與服務器的嚴格JSON-RPC通信。 服務器端API非常干凈,它也是我們的第三方接口API。 強制使該API與第三方接口使用的API相同,可以使服務器端代碼保持簡潔和最少,這對安全性和性能都有利。
  • 高度組件化的體系結構,分為用於對組件進行分組的模塊(通常是Ext.Panel派生類)。 每個組件都知道如何通過JSON-RPC調用請求其初始配置和數據,呈現自己以及在必要時保存其狀態。 我嘗試保持組件之間的通信干凈並記錄在案。
  • 按需架構,根據需要通過javascript文件加載其他組件。 整個代碼旨在通過回調進行初始化,以便組件可以從服務器加載其依賴關系,並在初始化自身之前僅呈現一個空的占位符。

在適當的情況下,各個組件可以使用MVC模式。 無論如何,Ext都傾向於鼓勵MVC,將數據分離到存儲中並擁有獨立的呈現基礎結構(盡管它確實將控制器邏輯與呈現的組件混合在一起)。

我不確定我對你的問題的理解,但我會給你一個機會。

MVC是一種架構模式,從本質上講,它意味着將數據模型,控制器和UI保持盡可能松散的耦合。

您正在嘗試將其煮沸到技術水平,但這沒有任何意義。 您可以使用良好的框架進行適當的MVC。 只是為了清楚起見,普通的PHP 並沒有為您提供良好的MVC支持。 一個好的框架,例如CakePHP或CodeIgniter-將會。

JS只是一種豐富客戶端體驗的好方法。 這意味着除非您正在使用服務器端JS,否則您將擁有JS的唯一位置就是視圖本身。 實質上,AJAX請求與MVC無關。 數據持久性也沒有。 除非您實現自己的控制器(並且最好自己擁有一個很好的理由這樣做),否則您不必擔心其內部邏輯。

最重要的是,如果您要執行適當的MVC,請使用適當的框架,所有步驟都將就緒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM