2016-10-05 28 views
2

最近我一直在閱讀域驅動設計,但我很少在Web應用程序中看到它(或者我可能沒有Google它),我想我們現在有足夠的複雜性來處理web應用程序。前端域模型

我需要一種方法來保持我的模型和業務邏輯清潔,最少耦合以及框架/庫不可知。例如,今天我使用AngularJS,明天我可以將UI切換到ReactJS。

說了我想用一個簡單的例子來學習這個。假設我想,具有以下特點創建報價申請:

給出一個報價

  1. 可以upvoted/downvoted。
  2. 可以加星標。
  3. 可以由用戶創建(進入評論隊列)。
  4. 用戶可以通過(Twitter,Facebook等)分享它。

給定一個用戶

當未登錄:

  • 可以看到隨機問詢。
  • 可以upvote/downvote報價。
  • 可以按標題或作者查詢報價。
  • 當登錄:

    1. 可以創建一個報價。
    2. 可以爲一個報價。

    我感興趣的是如何在保持UI和業務邏輯清潔和分離的情況下實現上述要求。

    我不是專家,但目前我可以提出這些未來可能會改變的要求。

    +1

    與Redux(和Elm本身)的反應實現了事件採購的範式,並將呈現和「邏輯」清晰地分離開來,並以不可變的存儲結束「左側」樣式狀態更新它。 –

    +0

    對於業務線應用程序,我傾向於擁有服務器上的所有邏輯和非常愚蠢的客戶端。我在客戶端擁有業務邏輯的唯一原因是爲了提高性能和用戶體驗,但最終你不能相信UI的狀態,所以必須在服務器上覆制所有的邏輯。我在客戶端中最複雜的邏輯是視圖邏輯。如果我發現業務邏輯正悄悄進入客戶端,我確信這些數據可以從服務器返回的負載中獲得。你在客戶中有什麼樣的業務邏輯? – plalx

    +0

    順便說一句,對於單頁應用程序中的數據同步,我只聽來自服務器的事件流並重新發出受影響的查詢。因此,保持狀態保持最新狀態的邏輯很少。如果你能負擔得起的性能,那麼這是一個好方法。 – plalx

    回答

    0

    您應該在前端和後端(服務器端)實現MVC模式。爲了清晰地分離責任和團隊資源/專業知識(API開發人員,UI開發人員),您可以通過REST API和使用各種客戶端技術(例如angular,cordova,react等)的UI開發來展示業務邏輯。

    UI開發人員應該能夠在沒有API的情況下獨立開發。他們將不得不創建自己的模型,視圖和控制器(MVC)。同樣,API開發人員應該能夠開發業務領域並展示業務所需的必要操作(例如CRUD)或無處不在的語言。 API層將擁有自己的模型,視圖和控制器。