功能对比
WMRouter | ARouter | DRouter | |
---|---|---|---|
多scheme和host的支持 | ✅;可随意添加,scheme、host不需要强制配置 | ❎;支持标准URL跳转。有组的概念,一个路由(url)中的path必须属于某个组 | ❎; |
动态注册路由节点 | ✅;@RouterUri标注 | ✅;@Route标注 | ✅;@Route标注 |
URI正则匹配 | ✅;使用@RouterRegex标注,匹配的path可以直接跳转到对应界面 | ❎;组的概念存在,不支持 | ✅; path如果不是正则表达式,必须以/开头 |
拦截器 | ✅;支持配置全局拦截器和局部拦截器,分别可配置多个,可以自定义拦截顺序 | ✅;支持配置全局拦截器,可以通过priority自定义拦截顺序,值越小优先级越高 | ✅;支持配置全局拦截器和局部拦截器,分别可配置多个,可以通过priority自定义拦截顺序,值越大优先级越高 |
转场动画 | ✅; | ✅; | ✅; |
降级策略 | ✅;支持全局降级和局部降级 | ✅;支持全局降级和局部降级 | ✅;支持局部降级 |
跳转监听 | ✅;支持全局和单次,定义全局的OnCompleteListener实现埋点 | ✅;支持全局和单次 | ✅;支持全局和单次,定义全局的RouterCallback实现埋点 |
跳转参数 | ✅;支持基本类型和自定义类型 | ✅;支持基本类型和自定义类型,通过withChar("CharKey", 'a')、withInt("IntKey", 11)、withBoolean("BooleanKey", true)、withString("StringKey", "value") | ✅;支持基本类型和自定义类型,统一使用putExtra(key, value) |
参数自动注入 | ❎; | ✅; @Autowired 注解的属性可被自动注入 | ❎; |
外部跳转控制 | ✅; 需要配置入口Acitity,支持的uri需要在Manifest中配置 | ✅;需要配置入口Acitity,支持的uri需要在Manifest中配置 | ✅; 提供入口Activity,通过DRouter分发 |
自动生成路由表 | ✅;TransformAPI+ASM | ✅;groovy插件 + Transform API在编译期自动生成 | ✅;groovy插件 + Transform API+javassist在编译期自动生成 |
路由节点的生成方式 | ✅; 框架加载时加载全部路由节点到内存 | ✅;按照组的划分进行懒加载 | ✅; 框架加载时加载全部路由节点到内存 |
路由节点扩展 | ✅;扩展性高,可以通过一个Uri来不只做页面的跳转 | ✅; 一般 |
https://blog.csdn.net/fanguangjun123/article/details/83585231
网友评论