2010-07-25 49 views
1

我知道MVC在PHP應用程序中備受好評,但我不確定它適合JavaScript。如果您認爲不然,那麼請解釋您如何以及在哪裏處理常見場景,如AJAX請求,數據保存(離線存儲),演示文稿,如何處理控制器邏輯(您是否擁有前端控制器?)等等。幾乎完整的基於JavaScript的Web應用程序的體系結構?

Model-View-Presentation怎麼樣?

我使用ExtJS並僅將服務器用於永久性數據存儲。

+0

我們談論的服務器端JS呢? – 2010-07-25 09:21:45

+0

服務器上的PHP,客戶端上的JavaScript。 PHP是基於MVC,除了沒有V.我想弄清楚如何處理JavaScript。 – Tower 2010-07-25 09:25:38

回答

1

如果你打算用JavaScript編碼純粹的UI,你能想到的東西你的PHP作爲結束多Web服務的或API

基本上,您的視圖將是您在JS中編寫的Ext JS東西。爲了處理您的數據,Ext前端會對您的「服務」執行請求。基本上你會在你的服務器上有一種模型 - 控制器體系結構,控制器的工作是處理請求並輸出JSON(供你的Ext前端使用)

本質上,後端的「視圖」只會從json_encode輸出,然後由實際的基於Ext的視圖使用。

在JS中,你可以擁有控制器,取決於你正在做什麼類型的東西。如果您只是顯示來自服務器的數據,則可能不需要太多獨立的邏輯。如果您正在做一些更復雜的處理,將代碼分離到單獨的控制器和視圖可能會很有用。

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

+0

是的,我知道,但JavaScript呢?它是否有控制器,模型,視圖或其他東西? – Tower 2010-07-25 16:40:08

+0

編輯答案,希望有幫助=) – 2010-07-25 19:51:38

0

我不知道我明白你要問你的問題,但我會給它一個鏡頭。

MVC是一種架構模式,其本質意味着儘可能保持數據模型,控制器和UI的鬆散耦合。

您正試圖將其歸結爲技術層面,而這並沒有什麼意義。你可以用一個好的框架來做適當的MVC。只是爲了說清楚,普通香草PHP 並不是給你良好的MVC支持。一個好的框架,比如CakePHP或CodeIgniter將會。

JS只是一個豐富客戶端體驗的好方法。這意味着,除非你在做服務器端的JS,否則你唯一擁有JS的地方就是在視圖本身中。 AJAX請求與MVC無關。數據持久性也沒有。除非你正在實現自己的控制器(並且你最好自己有一個該死的充分理由),否則你不應該擔心它的內部邏輯。底線,如果你想做適當的MVC,使用合適的框架,並且所有的都將落實到位。

+0

那麼,你是否建議我使用JavaScriptMVC或其他框架?我很肯定會在服務器上使用模型和控制器,但我不知道在客戶端做出好的架構決策。你看,目前我的應用程序是將數百個JavaScript文件分割成一些文件夾和文件。這不是很方便,那麼就需要有一個JavaScript架構,就像MVC到服務器端語言一樣。 – Tower 2010-07-25 16:43:59

1

當寫你能想到MVC的,因爲幾乎完整的JavaScript應用程序:

  • 觀點:DOM
  • 控制器:目前JavaScript
  • 型號:JavaScript的阿賈克斯組合調用及其PHP(或任何)後端對應

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

1

我使用了相同的架構:在後端PHP的頂部主要是ExtJS的。

我的解決辦法:

  • 與服務器嚴格JSON-RPC通信。服務器端API非常乾淨,它也是我們的第三方接口API。強制API與第三方接口使用的API相同使得您可以保持服務器端代碼的清潔和最小化,這對安全性和性能很有幫助。
  • 重組件化架構,分成模塊組組件(通常Ext.Panel衍生物)。每個組件都知道如何通過JSON-RPC調用請求其初始配置和數據,呈現其本身,並在必要時保存其狀態。我儘量保持組件之間的通信清潔和記錄。
  • 點播架構,根據需要通過JavaScript文件的其他組件加載。整個代碼的目的是通過回調來進行初始化,使組件可以從服務器載入他們的依賴關係和渲染只是一個空的佔位符它們初始化自己之前。

各個部件可以採用MVC模式,其中它是有意義的。無論如何,Ext傾向於鼓勵MVC,將數據分離到商店並具有單獨的渲染基礎設施(儘管它將控制器邏輯與渲染的組件混合)。

相關問題