Swiftui 路由设计基础2

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

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

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

从设计权限校验展望

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

设计同步权限校验

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

简单直观,也有效

设计异步权限校验

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

修改成await权限

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

架构重构一下

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

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

远程路由解析

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

结尾

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

相关推荐
sakiko_21 小时前
Swift学习笔记34-MVC架构,SwiftUI与UIkit混编练习
笔记·学习·swiftui·mvc·swift
sakiko_3 天前
Swift学习笔记33-多线程与UI渲染
笔记·学习·swiftui·swift
东坡肘子5 天前
从社区路标到生态基石:Dave Verwer 的新篇章 -- 肘子的 Swift 周报 #137
人工智能·swiftui·swift
Daniel_Coder9 天前
iOS Widget 开发-18:Widget 的 SwiftUI 视图适配与设计
ios·swiftui·swift·widget·widgetcenter
Daniel_Coder12 天前
iOS Widget 开发-12:Widget 深度链接与导航
ios·swiftui·swift·widget·intents
Daniel_Coder12 天前
iOS Widget 开发-11:Widget 交互按钮实战(iOS 17+ App Intents)
ios·swiftui·swift·widget·link·appintents
东坡肘子12 天前
消失的 WWDC 愿望单 -- 肘子的 Swift 周报 #136
人工智能·swiftui·swift
浩宇软件开发13 天前
SwiftUI入门 10 分钟学会做一个 App 引导页
ios·swiftui·swift
sakiko_15 天前
Swift报错合集(Xcode编译器)
开发语言·swiftui·xcode·swift·uikit
Joseph1818 天前
深度拆解 DanceUI:从声明式视图到原生渲染的全链路技术解析
ios·swiftui