Lotusoot 0.0.3

Lotusoot 0.0.3

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最新发布2017年12月
SwiftSwift 版本4.0
SPM支持 SPM

coderfish 维护。



Lotusoot 0.0.3

  • 周凌宇

Lotusoot

Lotusoot 是一个路由工具,也是模块化项目的解耦工具。

中文介绍

安装

pod 'Lotusoot'

如何使用

1. 配置

  1. 在 Xcode 中:点击文件列表中的项目,在 TARGETS 下选择您的目标,点击 Build Phases 标签,并点击左上角的加号图标添加一个新的运行脚本阶段。
  2. 将新的运行脚本阶段拖动到编译源文件阶段之上,并放在 Check Pods Manifest.lock 之下,展开并粘贴以下脚本

python ${PODS_ROOT}/Lotusoot/Lotusoot/Lotusoot.py ${SRC_ROOT} ${SRCROOT} Lotusoot
# parameter1: scan path
# parameter2: ${SRCROOT}, output path of Lotusoot.plist
# parameter3: suffix of Lotusoot(Can bes omited), Omit leads to script execution time
  1. 构建您的项目,在 Finder 中您现在会在 $SRCROOT-folder 中看到一个 Lotusoot.plist,将 Lotusoot.plist 添加到您的项目中,并且如果有必要请取消勾选“复制项目”。

提示:将 Lotusoot.plist 添加到您的 .gitignore 文件中以防止不必要的冲突。

2. 使用

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // register all routes
    LotusootCoordinator.registerAll()
    return true
}
  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 ?? "")
}
  1. 注册路由
let error: NSError? = LotusootRouter.register(route: "newproj://account/login") { (lotusootURL) in
    accountModule.showLoginVC(username: "admin", password: "wow")
}
  1. 打开 URL
let param: Dictionary = ["username" : "admin",
                                 "password" : "wow"]

// no call back                                 
LotusootRouter.open(route: "newproj://account/login", params: param)
// has call back
LotusootRouter.open(route: "newproj://account/login", params: param).completion { (error) in
    print(error ?? "open success")
}

// ⚠️Not recommanded, use ?pram0=xxx lead to mismanagement
// This method just for H5 page of Hybrid project
LotusootRouter.open(url: "newproj://account/login?username=zhoulingyu").completion { (error) in
    print(error ?? "open success")
}

3. 注释和建议

Lotusoot 的良好使用示例:

  1. 创建 公共模块,其中它为所有模块定义了 Lotus 协议。一个 Lotus 协议定义了所有对其他模块开放的功能。例如:
public protocol AccountLotus {
    func login(username: String, password: String, complete: (Error?) -> Void)
    func register(username: String, password: String, complete: (Error?) -> Void)
    func email(username: String) -> String
    func showLoginVC(username: String, password: String)
}
  1. 公共模块 中实现您定义的 Lotus 协议,您可以将其命名为 Lotusoot。在 Lotusoot 中,您必须为当前的 Lotusoot 添加注释,包括:Namespace-@NameSpaceLotusoot-@LotusootLotus-@Lotus
// @NameSpace(TestAccountModule)
// @Lotusoot(AccountLotusoot)
// @Lotus(AccountLotus)
class AccountLotusoot: NSObject, AccountLotus {
    
    func email(username: String) -> String {
        return OtherService.email(username: "zhoulingyu")
    }

    func login(username: String, password: String, complete: (Error?) -> Void) {
        LoginService.login(username: username, password: password, complete: complete)
    }
    
    func register(username: String, password: String, complete: (Error?) -> Void) {
        RegisterService.register(username: username, password: password, complete: complete)
    }
    
    func showLoginVC(username: String, password: String) {
        print("show login view controller")
    }
}

Lotusoot 必须 继承自 NSObject

  1. 在您的主项目中 import Lotusootimport ModulePublic。现在您可以自由调用所有的服务和路由器了。

提示:您可以通过参看 Demo -> NewProject

演示

Demo 工程,请记住首先构建所有的 Scheme

待办事项

  • 动态获取路由器
  • 统一的方式进行 View Controller 跳转
  • 自定义动画

许可证

Lotusoot 使用 MIT 许可证