1.什麼是元件化
談一談我的想法:元件化是模組化思想的一種實現方案,其主要是通過依賴module的方式,解耦程式碼。模組之間依賴很小,主要通過路由進行通訊。
2.為什麼要進行元件化?
- 對於我個人來說,在長期的開發過程中存在幾個常見問題:
- 新開了專案還要新建工程,或者複製以前工程進行修改,要麼無法有效複用程式碼,要麼產生大量冗餘程式碼
- 專案耦合度高,在編寫程式碼的時候開發人員經常會改動別人的模組
- 專案龐大,漫長的編譯時間
3.理想的元件化實踐
- 在元件化的實踐道路上,我也不是憑空想象,也參閱過很多文章,發現大家的目標基本一致:
- 模組之間解耦,通過路由進行通訊
- 模組可以單獨編譯,也可以和其他模組一起編譯
4.我的元件化實踐示意圖
各個模組功能簡介
1. app-module 基本是以初始化專案引數為主,原則上只有splash頁面,或者不包含任何ui相關的程式碼
2. sdk-module 是用來向業務module(app,login,a,b)提供通用程式碼塊的module:
1. res-module 主要用來存放專案所用的資原始檔
2. utils-module 提供通用的工具類
3. ui-module 提供ui 相關的元件庫
4. javabean 提供專案開發所需要的實體類
3. login-module 登入模組對於大多數app來說都要單獨分離出來,主要是因為我在實際開發中,大多數請求都需要我們向服務端傳遞token,以及一些使用者資訊。如果沒有token那麼對於我們來說,只能進行硬編碼,這樣會存在很多潛在風險,而且並不能模擬真實環境
4. a,b-module 其他業務模組
複製程式碼
5.推薦的編譯方案
在日常開發中我推薦儘量的將業務程式碼模組化
我個人推薦使用的編譯方法是app-module 依賴 sdk,login,和相關業務module 這樣在打包的時候不需要全部打包,只需要部分程式碼就可以執行
當然也有人喜歡單獨編譯一個module輸出apk,這其實都不是什麼難事,只要配置gradle property 引數, 然後在gradle指令碼中配置就可以實現
文章寫得倉促 ,諸多不足之處還望各位體諒