我目前正在使用的基於網絡的應用程序正在增加手臂和腿部!它基本上是一個管理系統,可以幫助用戶跟蹤預訂,用戶賬戶,開票等。它也可以通過幾個不同的網站使用相當原始的API訪問。胖客戶端設計鬆散地遵循MVC模式(或可能是MVP)與PHP/MySQL後端,前端控制器,幾個不同的頁面控制器,一個面向對象和程序模型的自由派少數,混亂的一堆視圖和模板,一些JavaScript,CSS文件和Flash對象。我的胖客戶端應用程序是否屬於MVC模式?
在我的程序員的「關注點分離」的原則,一個大的風扇和關於這一點,我正在試圖找出分離和結合的各種關切的最好途徑項目不斷增加,更多人爲此做出貢獻。
我們面臨的問題是,雖然JavaScript(或帶有ActionScript的Flash)通常是使用模板編寫的,因此是View的一部分並與Controller和Model分離,但我們發現它實際上包含了整個MVC模式...用一個onmouseover事件交換圖像 - 這就是行爲。渲染一個數據網格 - 我們正在操縱視圖。通過AJAX發送重新排序列表的結果 - 現在我們在Control中。檢查一個表單字段以查看電子郵件地址是否採用有效格式 - 我們正在諮詢模型。
讓數據庫人員用jQuery寫出驗證模型是明智的嗎? PHP程序員可以在JavaScript中編寫必要的控制結構嗎?網頁設計師是否真的可以爲他們的視圖編寫功能性的AJAX表單?每個項目是否應該有一個JavaScript霸主?
如果MVC模式可以適用於人民,而不是代碼,我們最終會得到這樣的:
- 模式 - 數據庫擠入 - 「SELECT * FROMWHERE
interested
IS NULL」 - 控制 - 討厭的程序員 - 「類東西擴展NothingAbstractClass {...}」
- 視圖 - 圖形/網頁設計師的傳統領域 - 「」
...和一個新的層:
- 行爲 - 互動和反饋設計師 - 「CSS3是新的黑色......」
所以,我們正在重構,我想堅持到最佳實踐設計,但我不知道如何繼續。我不想重新發明輪子,那麼任何人都會對我應該看到的模式或者已經完成骯髒工作的人的任何代碼示例有任何提示或提示?作爲編程人員,我怎樣才能將應用程序重寫爲後端和前端,同時保持兩者分離?
而在你問之前,是的,我看過Zend,CodeIgnitor,Symfony等等,不,他們似乎沒有跨越服務器邏輯和客戶端邏輯之間的界限!
你能舉一個你正在瞄準的具體例子嗎? – Gordon 2010-02-28 17:38:17
我的目標是找到一個最佳實踐設計模式,其中編寫後端php模型,視圖和控制器的人可以以某種方式動態地將相同的MVC邏輯寫入前端Javascript,而不需要混合JavaScript和PHP,複製代碼意圖或者讓UI傢伙搞亂代碼 - 所以在後端MVC的V中有一種前端MVC。我有點新 - 如果不清楚,我應該編輯我的問題嗎? – boatingcow 2010-02-28 18:46:56
+1有趣的問題。現在我使用PHP json_encode將全局設置放入一個JavaScript變量中。但這還不夠,還有重複的代碼。 – Sagi 2010-03-01 14:24:45