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

相关文章
相关标签/搜索