测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2017年12月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 coderfish 维护。
Lotusoot 是一个路由工具,也是模块化项目的解耦工具。
pod 'Lotusoot'
TARGETS
下选择您的目标,点击 Build Phases
标签,并点击左上角的加号图标添加一个新的运行脚本阶段。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
$SRCROOT-folder
中看到一个 Lotusoot.plist
,将 Lotusoot.plist
添加到您的项目中,并且如果有必要请取消勾选“复制项目”。提示:将
Lotusoot.plist
添加到您的 .gitignore 文件中以防止不必要的冲突。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// register all routes
LotusootCoordinator.registerAll()
return true
}
let lotus = s(AccountLotus.self)
let accountModule: AccountLotus = LotusootCoordinator.lotusoot(lotus: lotus) as! AccountLotus
accountModule.login(username: "admin", password: "wow") { (error) in
print(error ?? "")
}
let error: NSError? = LotusootRouter.register(route: "newproj://account/login") { (lotusootURL) in
accountModule.showLoginVC(username: "admin", password: "wow")
}
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")
}
Lotusoot
的良好使用示例:
公共模块
,其中它为所有模块定义了 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)
}
公共模块
中实现您定义的 Lotus
协议,您可以将其命名为 Lotusoot
。在 Lotusoot
中,您必须为当前的 Lotusoot
添加注释,包括:Namespace-@NameSpace
、Lotusoot-@Lotusoot
、Lotus-@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
import Lotusoot
、import ModulePublic
。现在您可以自由调用所有的服务和路由器了。提示:您可以通过参看 Demo -> NewProject
Demo 工程,请记住首先构建所有的 Scheme
。
Lotusoot
使用 MIT 许可证