兩種結構規劃以及優劣

純angular菜鳥,個人的一些想法與總結。
背景:一個數據的統計後臺,左邊導航欄,右邊按需求的表格展示。

先說說我現在的大致結構:

  • service
    • 左邊導航的配置數據,包含title、link
    • 全局使用的其他常量數據,例如其中有一個是篩選的遊戲渠道:1.網易、2.騰訊等
    • 一個loading服務,對應一個loading的view,ajax前顯示,回調成功隱藏。
  • config
    • angular_route配置文件
  • directive
    • 自定義的左邊導航下拉菜單的指令
  • controller
    • 根據功能劃分的控制器,每一個導航欄對應一個控制器
  • view
    • 根據功能對應的模板文件,與每一個導航欄項和其控制器對應

1.根據功能劃分結構

與我現在的結構一致,但是不使用requirejs或seajs的情況下,隨着模塊的增多,就會出現與我現在一樣的尷尬問題:
這裏寫圖片描述

雖然controller之間沒有任何依賴關係…..但是看起來還是那麼的蛋疼。因此我想到第二種規劃結構的方式:

2.根據頁面結構劃分

首先,控制器不再去按照功能去劃分,而是按照頁面結構去劃分,分爲leftBar左邊導航欄、rightPanel右邊面板以及其子控制器formController,具體功能的數據結構,放置到一個服務中,這個服務按照用戶點擊的左邊導航欄,去訪問對應的數據接口,返回的數據直接綁定給表格控制器,直接渲染表格即可。
如果按照這種結構去劃分,那麼實際上控制器只有三個,數據服務層如果抽象的很高級,那麼並不需要很多的文件或者對象,但是如果還是按照每一個功能建立一個數據結構,簡化的工作量並沒有那麼多。

最後:

我們再來比較一下兩種方法的優劣:

第一種情況:也是人最好理解的情況,程序不需要去處理過多結構上的邏輯處理,只需要按部就班的處理本功能區塊內的邏輯,易理解,但是代碼量比較大。易於修改。

第二種情況:需要大量的代碼去處理結構上的邏輯,例如給左邊導航欄Data對象裏面加上一個getDataUrl,並封裝一個ajax方法,當用戶點擊的時候,直接通過檢索這個值去自動的ajax對應接口的數據,並渲染。這樣後期增加需求的時候,你只需要去配置(左邊導航Data對象)中增加一個新的屬性,並賦予正確的值即可,不需要再像第一種情況一樣再去定義一個控制器,寫邏輯,然後引入、順便還是更改route配置等。但是這種情況,如果沒有代碼本身沒有一個好的結構,那麼過一段時間之後很難理解,並且如果需求變動比較大,當需要修改核心代碼的時候就比較痛苦了,因爲其中耦合性比較強,邏輯稍微變動一下,影響很大。

因此實際情況的應用還是看項目的穩定性、以及自己的喜好了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章