Swiftui 路由设计基础2

最近尚有点时间,我会一篇篇讲述一下我对swiftui, swift, flutter的各种理解.

上周看到swiftui的路由设计还是有挺多人看的,本篇就再延伸一点,将以探索的思路跟读者聊天如何swiftui路由的进一步优化

上一篇文章戳这里Swiftui 路由设计基础 - 掘金 (juejin.cn)

从设计权限校验展望

权限校验是指我们在做路由跳转的时候可能会需要一些前置判断,比如判断聊天室中,判断自己本身是否是聊天室成员来决定能否跳转聊天室.比如个人资料编辑页面需要在登录状态下才能够跳转等等.甚至有些是异步的请求,根据服务器数据来判断权限等等.

设计同步权限校验

我们可能第一时间想到的就是在路由跳转行为前增加条件判断即可.比如下面这样:

简单直观,也有效

设计异步权限校验

但是,有些时候我们需要异步的一些权限判断,比如聊天室成员判断等,这时候,按照之前的思路,我们可以增加一些异步的判断请求等等.比如下面这样

修改成await权限

这时候,想想唉,既然已经是异步了,抽成await也未尝不可,我们继续往下抽

架构重构一下

再回过头看,感觉这样的代码又不是特别好,enum不支持extension,所有的路由路径都写在RouterDestination里,不利于模块化开发.那我们来改造一下吧

考虑一下如何抽出子模块,这里我将RouterDestination协议化,子模块路径遵循该协议,另外抽出行为模块协议,做遍历及注册使用. 模块路径方面仍然使用的是enum(enum的好处任然是不言而喻的),同时我将路由权限下放给子模块,这样,可以直接省去模块路径权限判断的额外代码. 这里,读者可以看到,子模块的权限就变得十分强大了,可以自行决定是否同步权限,异步权限,操作的自由性大大提高

远程路由解析

之前我说过远程路由需要与本地路由拆分,这里我也适当增加一些远程路由解析的思路 同样还是模块化的延伸,将远程路由解析下放到各个本地路由即可.

结尾

项目想要做大做强,项目的规范化是必不可少的,模块化路由也是其中重要的一环,希望本篇对各位读者能有小小的帮助.

相关推荐
struggle202516 小时前
Ollmao (OH-luh-毛程序包及源码) 是一款原生 SwiftUI 应用程序,它与 Ollama 集成,可在 Mac 上本地运行强大的 AI 模型
ios·swiftui·swift
货拉拉技术1 个月前
货拉拉用户端SwiftUI踩坑之旅
ios·swiftui·swift
ZacJi1 个月前
巧用 allowsHitTesting 自定义 SignInWithAppleButton
ios·swiftui·swift
刘争Stanley1 个月前
SwiftUI 是如何改变 iOS 开发游戏规则的?
ios·swiftui·swift
1024小神1 个月前
在swiftui中使用Alamofire发送请求获取github仓库里的txt文件内容并解析
ios·github·swiftui
大熊猫侯佩1 个月前
SwiftUI 撸码常见错误 2 例漫谈
swiftui·xcode·tag·tabview·preview·coredata·fetchrequest
东坡肘子2 个月前
肘子的 Swift 周报 #063|异种肾脏移植取得突破
swiftui·swift·apple
恋猫de小郭2 个月前
什么?Flutter 可能会被 SwiftUI/ArkUI 化?全新的 Flutter Roadmap
flutter·ios·swiftui
靴子学长2 个月前
iOS + watchOS Tourism App(含源码可简单复现)
mysql·ios·swiftui
hxx2212 个月前
iOS swift开发系列--如何给swiftui内容视图添加背景图片显示
ios·swiftui·swift