luckybilly / CC

业界首个支持渐进式组件化改造的Android组件化开源框架,支持跨进程调用。Componentize your android project gradually.
https://luckybilly.github.io/CC-website/
Apache License 2.0
4.05k stars 635 forks source link

相比Arouter,CC的使用过于复杂了,是否考虑简化? #152

Closed 0xByteLeon closed 4 years ago

0xByteLeon commented 5 years ago

也可能是Arouter文档更完善的错觉

luckybilly commented 5 years ago

@DreamerLeon 这方面我暂时没有更加简化的思路,如果你有这方面的方案,还请分享一下。

下面说一下我的理解吧: ARouter是单纯的路由,而CC是一整套基于总线的组件化解决方案,内容相对较多一些 (延伸阅读: 组件化核心引擎(路由 VS 总线)

另外,CC在设计之初的主要目标之一就是要支持渐进式组件化开发,为此,将组件间的跳转和服务调用抽象成一种基于组件总线的类似于http请求的组件调用,并支持跨进程调用,从而实现渐进式组件化开发的效果,并将代码隔离做到极致:组件之间根本不互相依赖。

自从CC开源后,我也一直致力于完善CC的文档,并多次重新编辑,最终的文档与其它组件化方案的文档相比已经比较完善了,各种功能细节基本上都有介绍。

欢迎分享一下你的理解,谢谢!

robotAndroidCode commented 5 years ago

也可能是Arouter文档更完善的错觉

我倒是感觉 ARouter 功能完全不够, 用了一段时间感觉问题挺多的

另外, CC 和其他组件化框架是两种框架.

两种方式都有各自的好处, 因为 CC 是这种框架的唯一的一个, 没法做对比. 但是 ARouter 虽然出现的最早, 但是现在看起来很多功能缺失, 用了一段时间感觉少了很多东西

上述这几个都是一类的, 但是现在看上去, ARouter 并没有突出, 反倒其他的有些功能更为好用

可能 ARouter 更追求稳定吧, 也不少说

0xByteLeon commented 5 years ago

也可能是Arouter文档更完善的错觉

我倒是感觉 ARouter 功能完全不够, 用了一段时间感觉问题挺多的

能说说你遇到的问题么?

robotAndroidCode commented 5 years ago

也可能是Arouter文档更完善的错觉

我倒是感觉 ARouter 功能完全不够, 用了一段时间感觉问题挺多的

能说说你遇到的问题么?

上面只是我小总结, 不对的地方还请指出

0xByteLeon commented 5 years ago

也可能是Arouter文档更完善的错觉

我倒是感觉 ARouter 功能完全不够, 用了一段时间感觉问题挺多的

能说说你遇到的问题么?

  • 你不觉得 Arouter 拦截器只有全局拦截器这个不够用吗?
  • 你不觉得 ARouter 做不到获取目标 ActivityResult 这个功能很伤吗?
  • 你不觉得拦截器的执行线程是子线程很傻吗?类似于纯功能来说, 这样没问题, 路由的拦截器耶, 本身服务的是路由, 用户几乎都是在主线程上写代码, 我在拦截器中弹个菊花我还得切换线程?
  • 路由代码写的多了, 你会发现那些界面参数复杂的跳转写起来很长, 而且改的时候 key 就容易出错. 类似于 Retrofit 接口针对参数复杂的界面就非常适合

上面只是我小总结, 不对的地方还请指出

1、全局拦截器的问题 这个拦截器这种东西,我想一般不会针对单个页面去做吧?这种情况确实麻烦,其他的可以通过分组之类的操作来做拦截,我觉得还好? 2、这个问题确实有点泛,我也觉得不好 3、子线程拦截,做线程切换确实不太好,针对你说的这个菊花的问题,但是组件化的情况下,毕竟不是插件化,菊花这种东西通过拦截器去做,我个人不太会去这么做 4、这一条的话,路由跳转的封装我觉得还是要做的,我觉得不是太大的问题,当然Retrofit的方式,确实不错

robotAndroidCode commented 5 years ago

也可能是Arouter文档更完善的错觉

我倒是感觉 ARouter 功能完全不够, 用了一段时间感觉问题挺多的

能说说你遇到的问题么?

  • 你不觉得 Arouter 拦截器只有全局拦截器这个不够用吗?
  • 你不觉得 ARouter 做不到获取目标 ActivityResult 这个功能很伤吗?
  • 你不觉得拦截器的执行线程是子线程很傻吗?类似于纯功能来说, 这样没问题, 路由的拦截器耶, 本身服务的是路由, 用户几乎都是在主线程上写代码, 我在拦截器中弹个菊花我还得切换线程?
  • 路由代码写的多了, 你会发现那些界面参数复杂的跳转写起来很长, 而且改的时候 key 就容易出错. 类似于 Retrofit 接口针对参数复杂的界面就非常适合

上面只是我小总结, 不对的地方还请指出

1、全局拦截器的问题 这个拦截器这种东西,我想一般不会针对单个页面去做吧?这种情况确实麻烦,其他的可以通过分组之类的操作来做拦截,我觉得还好? 2、这个问题确实有点泛,我也觉得不好 3、子线程拦截,做线程切换确实不太好,针对你说的这个菊花的问题,但是组件化的情况下,毕竟不是插件化,菊花这种东西通过拦截器去做,我个人不太会去这么做 4、这一条的话,路由跳转的封装我觉得还是要做的,我觉得不是太大的问题,当然Retrofit的方式,确实不错

0xByteLeon commented 5 years ago

也可能是Arouter文档更完善的错觉

我倒是感觉 ARouter 功能完全不够, 用了一段时间感觉问题挺多的

能说说你遇到的问题么?

  • 你不觉得 Arouter 拦截器只有全局拦截器这个不够用吗?
  • 你不觉得 ARouter 做不到获取目标 ActivityResult 这个功能很伤吗?
  • 你不觉得拦截器的执行线程是子线程很傻吗?类似于纯功能来说, 这样没问题, 路由的拦截器耶, 本身服务的是路由, 用户几乎都是在主线程上写代码, 我在拦截器中弹个菊花我还得切换线程?
  • 路由代码写的多了, 你会发现那些界面参数复杂的跳转写起来很长, 而且改的时候 key 就容易出错. 类似于 Retrofit 接口针对参数复杂的界面就非常适合

上面只是我小总结, 不对的地方还请指出

1、全局拦截器的问题 这个拦截器这种东西,我想一般不会针对单个页面去做吧?这种情况确实麻烦,其他的可以通过分组之类的操作来做拦截,我觉得还好? 2、这个问题确实有点泛,我也觉得不好 3、子线程拦截,做线程切换确实不太好,针对你说的这个菊花的问题,但是组件化的情况下,毕竟不是插件化,菊花这种东西通过拦截器去做,我个人不太会去这么做 4、这一条的话,路由跳转的封装我觉得还是要做的,我觉得不是太大的问题,当然Retrofit的方式,确实不错

  • 很多功能不是说必须的, 但是你时候会用到, 当你用到的时候你会感谢框架的
  • 另外拦截器你可能只停留在全局的概念. 那是因为你对拦截器这三个字的解读, 觉得它就是应该是一个全局的东西.而每一个框架用拦截器做何种设计还得看框架
  • 你说的拦截器的问题和菊花的问题, 因为别的框架没有页面拦截器那个概念, 我建议你去深入了解一下页面拦截器这个东东, WMRouterComponent 都有
  • ARouter 不是说不能用, 但是在我看来已经是做的不够的了, 我自己对组件化研究比较深, 对比了很多框架目前看起来做的最全是的 Component
  • 组件化框架只要解决了路由跳转和跨组件调用, 或者像 CC 专注于解决 跨组件调用的都可以称为一个组件化方案, 但是最终还是要体现在好用上, 否则我觉得为了组件化而组件化有点不值当, 况且组件化方案涉及到整个项目的架构, 选择还是很重要的

谢谢