2010-02-28 55 views
2

我目前正在使用的基於網絡的應用程序正在增加手臂和腿部!它基本上是一個管理系統,可以幫助用戶跟蹤預訂,用戶賬戶,開票等。它也可以通過幾個不同的網站使用相當原始的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 * FROM​​WHERE interested IS NULL」
  • 控制 - 討厭的程序員 - 「類東西擴展NothingAbstractClass {...}」
  • 視圖 - 圖形/網頁設計師的傳統領域 - 「」

...和一個新的層:

  • 行爲 - 互動和反饋設計師 - 「CSS3是新的黑色......」

所以,我們正在重構,我想堅持到最佳實踐設計,但我不知道如何繼續。我不想重新發明輪子,那麼任何人都會對我應該看到的模式或者已經完成骯髒工作的人的任何代碼示例有任何提示或提示?作爲編程人員,我怎樣才能將應用程序重寫爲後端和前端,同時保持兩者分離?

而在你問之前,是的,我看過Zend,CodeIgnitor,Symfony等等,不,他們似乎沒有跨越服務器邏輯和客戶端邏輯之間的界限!

+0

你能舉一個你正在瞄準的具體例子嗎? – Gordon 2010-02-28 17:38:17

+0

我的目標是找到一個最佳實踐設計模式,其中編寫後端php模型,視圖和控制器的人可以以某種方式動態地將相同的MVC邏輯寫入前端Javascript,而不需要混合JavaScript和PHP,複製代碼意圖或者讓UI傢伙搞亂代碼 - 所以在後端MVC的V中有一種前端MVC。我有點新 - 如果不清楚,我應該編輯我的問題嗎? – boatingcow 2010-02-28 18:46:56

+0

+1有趣的問題。現在我使用PHP json_encode將全局設置放入一個JavaScript變量中。但這還不夠,還有重複的代碼。 – Sagi 2010-03-01 14:24:45

回答

1

你和其他大腦都在問這個問題,這是一個棘手的問題。一位非常優秀的信息架構師認爲,在可用性,行爲和流程方面,雖然他/她甚至可能不知道如何使用設計工具或能夠繪製或編程。如果他們可以將界面變爲草圖,設計師可以使其更加美觀。讓設計師們做一些很自然的東西 - 這就是他們擅長的。向IA提供一個可以爲屏幕對象指定的前端行爲庫。他們沒有實現這個東西,他們只使用它。如果您使用JQuery等前端工具,這將變得更加容易,如果您的前端專家能夠很好地理解後端設計&,那就太棒了。將你的javascript分離到他們自己的目錄中,並始終將它們作爲外部文件鏈接。所有PHP框架都有動態執行此操作的方法。我已經提出了一個配置結構的想法,該配置結構將文件映射到所有加載的前端內容,以便每個單獨的視圖只加載所需的內容。但是你是絕對正確的:對於客戶端來說,主要存在於整個MVC的觀點之內的是一個完整的子MVC。我認爲你可以分割出Ajax的東西(當視圖需要返回服務器時)我將Ajax控制器方法記錄爲ajax方法,否則不要調用它們。其中很大一部分是讓你的團隊中的每個人都進入分工範式。它只會讓他們編寫更多的解耦可重用代碼,無論您最終選擇何種框架來掛起它。你是對的,你可以對它們進行前端封裝,但是它們中的任何一個都不能執行良好的前端封裝,我認爲這仍然是在DYI領域。祝你好運。

+0

有趣的是,這是多麼困難,我會說 - 仍然沒有解決的問題,多年來提出很少興趣。我想這可能是因爲沒有人有或沒有相信有答案。或者至少不是沒有一種語言。 – userfuser 2016-07-28 14:57:14

相關問題