最近我一直在閱讀域驅動設計,但我很少在Web應用程序中看到它(或者我可能沒有Google它),我想我們現在有足夠的複雜性來處理web應用程序。前端域模型
我需要一種方法來保持我的模型和業務邏輯清潔,最少耦合以及框架/庫不可知。例如,今天我使用AngularJS,明天我可以將UI切換到ReactJS。
說了我想用一個簡單的例子來學習這個。假設我想,具有以下特點創建報價申請:
給出一個報價
- 可以upvoted/downvoted。
- 可以加星標。
- 可以由用戶創建(進入評論隊列)。
- 用戶可以通過(Twitter,Facebook等)分享它。
給定一個用戶
當未登錄:
- 可以看到隨機問詢。
- 可以upvote/downvote報價。
- 可以按標題或作者查詢報價。
- 可以創建一個報價。
- 可以爲一個報價。
當登錄:
我感興趣的是如何在保持UI和業務邏輯清潔和分離的情況下實現上述要求。
我不是專家,但目前我可以提出這些未來可能會改變的要求。
與Redux(和Elm本身)的反應實現了事件採購的範式,並將呈現和「邏輯」清晰地分離開來,並以不可變的存儲結束「左側」樣式狀態更新它。 –
對於業務線應用程序,我傾向於擁有服務器上的所有邏輯和非常愚蠢的客戶端。我在客戶端擁有業務邏輯的唯一原因是爲了提高性能和用戶體驗,但最終你不能相信UI的狀態,所以必須在服務器上覆制所有的邏輯。我在客戶端中最複雜的邏輯是視圖邏輯。如果我發現業務邏輯正悄悄進入客戶端,我確信這些數據可以從服務器返回的負載中獲得。你在客戶中有什麼樣的業務邏輯? – plalx
順便說一句,對於單頁應用程序中的數據同步,我只聽來自服務器的事件流並重新發出受影響的查詢。因此,保持狀態保持最新狀態的邏輯很少。如果你能負擔得起的性能,那麼這是一個好方法。 – plalx