Skip to content

關於vue組件拆分

一個vue專案通常可以把組件分成以下三類:

  • 頁面組件:對應一個實際的頁面,通常在 pages/ 目錄下,每個頁面有自己的資料夾與 login/index.vue
  • 頁面零件組件(容器元件):開發時常常會把一個頁面拆成多個組件,然後又把這些組件掛載到頁面組件 如:login/dialog.vue
  • 共用組件:通常在components/,多個頁面多處都會用到 如:app-btn.vue

問題就在於頁面零件組件

  • 這些頁面零件組件基本上不會複用,還需要拆分嗎?其實不拆也很好,如果只是想說這個檔案行數太多了!不要超過500行!把一些東西拆去另一個組件!這樣拆就只會增加不必要的抽象,降低可讀性。
  • 如果要拆就要將邏輯集中在頁面組件,頁面零件組件不應該有任何的後端api調用、路由控制、業務邏輯相關的資料處理,全部透過拋出事件的方式讓index組件來處理,實現真正的UI和業務邏輯的關注點分離,這樣的好處:
    • 日後維護高機率只會改動到頁面組件
    • 頁面零件組件易於測試
    • 可讀性極高,只需關注頁面組件就可理解業務邏輯

參考資料

Smart and Dumb Component