使用 Swift PM 的最简单的方式是找到 Project Setting -> Swift Packages 并将 FJRouter 添加在其中。 搜索
https://github.com/zgjff/FJRouter
并
在你的 Podfile 文件中添加 FJRouter:
pod 'FJRouter'
然后运行 pod install
。
1: 当路由路径比较复杂,且含有参数的时候, 如果通过硬编码的方法直接手写路径, 可能会造成拼写错误,参数位置错误等
2: 在实际app中, 路由的
URL
格式可能会随着时间而改变, 但是一般路由名称不会去更改
设置路由的名称之后, 后续的跳转均可以通过name
进行。
路径
/family/:fid
, 可以匹配以/family/...
开始的url, eg:/family/123
,/family/456
and etc.
路径
/user/:id/book/:bookId
, 可以解析出参数分别需要id, bookId, 可以匹配/user/../book/...
的url, eg:/user/123/book/456
and etc.
FJRoute(path: "/", name: "root", builder: { sourceController, state in
UINavigationController(rootViewController: ViewController())
})
只适用与适用go、goNamed进行跳转的方式, 使用push、pushNamed、present、presentNamed时,此参数无任何意义。
框架内部已经内置了多种实现.
FJRoute.XXXXAnimator
/// 指向需要重定向的路由。
///
/// 可以携带参数.eg, 目标路由是`/family/:fid`, 则需要完整传入`fid`, 即`/family/123`
func redirectRoute(state: FJRouterState) async throws -> String?
框架已经提供了一个通用的拦截器实现FJRouteCommonRedirector
注意: 强烈建议子路由的
path
不要以/
为开头
let route = try! FJRoute(path: "settings", builder: ..., routes: [
try! FJRoute(path: "user", builder: ...),
try! FJRoute(path: "pwd", builder: ...),
try! FJRoute(path: "info/:id", builder: ...),
])
通过构建路由FJRoute
对象进行注册:
FJRouter.shared.registerRoute(route: FJRoute)
直接通过路由path
进行注册:
FJRouter.shared.registerRoute(path: String, ...)
FJRouter.shared.setRedirectLimit(50)
FJRouter.shared.setErrorBuilder { state in
return UIViewController()
}
强烈建议跳转的时候使用以goNamed为前缀的方法进行跳转
1: 当路由路径比较复杂,且含有参数的时候, 如果通过硬编码的方法直接手写路径, 可能会造成拼写错误,参数位置错误等
2: 在实际app中, 路由的
URL
格式可能会随着时间而改变, 但是一般路由名称不会去更改
FJRouter.shared.goNamed("login")
FJRouter.shared.go("/login")
会优先调用路由的
animator
参数; 若是animator
为nil
, 框架内部会先尝试push
, 然后尝试present
FJRouter.shared.go(location: "/login")
FJRouter.shared.goNamed("user", params: ["id": "123"])
注册路由的时候animator
设置为SystemPushAnimator
注册路由的时候animator
设置为SystemPresentAnimator
注册路由的时候animator
设置为AppRootControllerAnimator
注册路由的时候animator
设置为CustomPresentationAnimator
注册路由的时候animator
设置为SystemPushPopTransitionAnimator
准守并实现FJRouteAnimator
路由动画协议, 然后在注册路由的时候设置animator