路由功能
|
WMRouter |
ARouter |
多scheme和host的支持 |
✅;可随意添加,scheme、host不需要强制配置 |
❎;支持标准URL跳转。有组的概念,一个路由(url)中的path必须属于某个组 |
动态注册路由节点 |
✅;@RouterUri标注 |
✅;@Route标注 |
URI正则匹配 |
✅;使用@RouterRegex标注,匹配的path可以直接跳转到对应界面,比如weblink的跳转可以配置正则匹配来路由 |
❎;组的概念存在,不支持 |
拦截器 |
✅;支持配置全局拦截器和局部拦截器,分别可配置多个,可以自定义拦截顺序 |
✅;支持配置全局拦截器,可以自定义拦截顺序 |
转场动画 |
✅; |
✅; |
降级策略 |
✅;支持全局降级和局部降级 |
✅;支持全局降级和局部降级 |
跳转监听 |
✅;支持全局和单次 |
✅;支持全局和单次 |
跳转参数 |
✅;支持基本类型和自定义类型 |
✅;支持基本类型和自定义类型 |
参数自动注入 |
❎; |
✅; @Autowired 注解的属性可被自动注入 |
外部跳转控制 |
✅; 需要配置入口Acitity,支持的uri需要在Manifest中配置 |
✅;需要配置入口Acitity,支持的uri需要在Manifest中配置 |
特殊页面跳转控制 |
✅;“exported”注解属性配置,特定页面可以配置不允许跳转 |
❎; |
自动生成路由文档 |
❎; |
✅; |
路由节点的生成方式 |
✅; 框架加载时加载全部路由节点到内存 |
✅;按照组的划分进行懒加载 |
路由节点扩展 |
✅;扩展性高,可以通过一个Uri来不只做页面的跳转 |
✅; 一般 |
模块间通信
|
WMRouter |
ARouter |
获取特定接口的实现 |
✅; @RouterService 注解配置,支持获取接口的所有实现,或根据Key获取特定实现 |
✅; @Route 注解配置,支持根据Path获取对应接口实现 |
更多特性
这里只是按照自己的理解做了简单对比,关于两个框架更多特性可访问官方链接: