Lotusoot(模塊化工具)

      項目的不斷更迭,致使項目愈來愈大,愈來愈臃腫,爲了讓項目更加條理,須要對項目進行模塊化處理,爲了減小模塊之間的耦合,因而就有了Lotusoot這個工具。python

1.Lotusoot工具集成:

1.安裝

pod 'Lotusoot'複製代碼

2.使用

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {    // 經過 Build 階段自動生成的 Lotusoot.plist 註冊
    LotusootCoordinator.registerAll()
    return true
}複製代碼

3.配置

  1. 在Xcode中點擊項目,選擇你的target,點擊Buid Phases,添加New Run Script Phase;
  2. 將新建的Run Script拖拽至Compile Sources上方、Check Pods Manifest.lock下方,並填入一下腳本(執行python):

  3. python ${PODS_ROOT}/Lotusoot/Lotusoot/Lotusoot.py ${SRC_ROOT} ${SRCROOT} Lotusoot
    # 參數1: 掃描路徑
    # 參數2: ${SRCROOT},Lotusoot.plist 輸出地址
    # 參數3: Lotusoot 命名後綴(可省略),省略將會致使腳本執行時間變長複製代碼

  4. 編譯你的工程,在 Finder 中能夠看到,工程目錄下生成了 Lotusoot.plist,將其拖入工程中,不要選擇 Copy items if needed
  5. Tip: 能夠將 Lotusoot.plist 放入 .gitignore 文件避免不要的衝突

2.Lotusoot的調用

1.服務調用

let lotus = s(AccountLotus.self) 
let accountModule: AccountLotus = LotusootCoordinator.lotusoot(lotus: lotus) as! AccountLotus
accountModule.login(username: "admin", password: "wow") { (error) in
    print(error ?? "")
}複製代碼

2.短鏈註冊

let error: NSError? = LotusootRouter.register(route: "newproj://account/login") { (lotusootURL) in
    accountModule.showLoginVC(username: "admin", password: "wow")
}複製代碼

3.短鏈調用

let param: Dictionary = ["username" : "admin",
                                 "password" : "wow"]

// 無回調                                 
LotusootRouter.open(route: "newproj://account/login", params: param)
// 有回調
LotusootRouter.open(route: "newproj://account/login", params: param).completion { (error) in
    print(error ?? "open success")
}複製代碼


3.註釋規範

1.建立模塊的Lotus協議,包含全部能調用的方法列表git

2.建立一個Lotusoot實現Lotus協議,並須要加入註釋命名空間-@NameSpaceLotusoot-@LotusootLotus-@Lotus:(該註釋是爲了執行腳本時自動註冊)swift

// @NameSpace(TestAccountModule)
// @Lotusoot(AccountLotusoot)
// @Lotus(AccountLotus)複製代碼

3.Tip: 因爲 Swift 的一些限制,目前 Lotusoot 必須繼承 NSObject
bash


4.源碼解析


一、Extension.swift: String類的擴展;返回輸入類的字符串;app

二、Lotusoot.py: 腳本文件,爲了實現自動註冊;模塊化

三、LotusootCoordinator.swift:用來註冊Lotusoot;工具

四、LotusootRouter.swift:用來註冊短鏈以及短鏈調用;ui

五、LotusootURL.swift: url對象,有route(路由)和params(參數)兩個屬性;還有兩個方法route(url: String)(路由解析)、params(url: String)(參數解析)url


5.注

短鏈註冊和短鏈調用的應用場景: H5調原生/應用之間的跳轉spa

相關文章
相關標籤/搜索