牛读一周年 重新起航
发布于 8 年前 作者 nihgwu 4565 次浏览 来自 分享

按惯例先放下载地址:牛读 v2.0.0 http://reader.liteneo.com/ 同时支持 iOS 以及 Android,欢迎品尝

牛读支持回复Cnode的帖子,但是不支持创建帖子,虽然这个支持起来不难,但是我觉得创建帖子是一件很严肃的事情,应该在 PC 上去完成

之前一直想着跟着 React Native 的 Release 节奏,每一两个月发一个版本,但是这次却等了四个多月,一方面是要等某些我想要的特性被支持,一些严重的八阿哥被修复,另外一个原因就是这次更新我几乎重写了绝大部分代码逻辑

从用户的角度看,这次更新几乎没有大的更新,只有几处 UI 的更新,比如知乎日报详情页的视差效果以及集成了微信分享,但是对我来讲,这是一次脱胎换骨的更新

  1. dva, 之前的版本没有使用任何redux、mobx之类的状态管理工具,因为我觉得整个 App 的逻辑并不复杂,但是事实并非如此,里面各种 ref 的使用使整个流程变得异常复杂,后来经过在 redux 和 mobx 中间纠结,最后选择了抱 redux 大腿,用过 redux 的应该都知道 redux 相对繁琐的写法,所以我选择了 dva,一个封装了 redux + redux-saga 的状态管理库,然后就开始了漫长的重构之旅,dva的体验非常棒,简化了 redux 的写法,以及与 rudx-saga 的集成,现在我将绝大部分逻辑从组件里移到了model里,整个流程清晰多了

  2. react-navigation, 在重构的过程中,RN 先是移除了 NavigationExperimental,接着 depreciated 了一直以来的官方推荐的导航组件Navigator, 转而推荐使用react-navigation,牛读最开始也是用的Navigator,后来因为NavigationExperimental支持原生驱动动画,性能好太多,就切到了NavigationExperimental,这个过程基本无痛,现在为了为以后做准备,于是切换到react-navigation,这真的是件很痛苦的事,一方面是使用方式完全不一样,但最主要的原因是这个库本身问题太多,在重构的过程中,我一直都在反馈问题,提交 PR,终于把他打磨的满足我的需求了(但是对于其他一些场景,他依然还有很多问题没有解决),现在牛读里所有的转场动画都是用 react-navigation 实现的,包括设置界面的旋转

我把 dva + react-navigation 的使用提炼了一个 react-native-dva-starter,我会持续把我认为的 dva 和 react-navigation 在 React Native 中的最佳实践加进去,有兴趣的可以关注下

目前牛读的安卓版还有两个已知的问题

  1. 部分文章显示不全被截断,这个是因为 React Native 的一个问题引起的
  2. 设置界面选择关闭某些模块后会白屏,这个可以通过重启来解决

主要是我手上没有安卓手机,没办法测试,再就是精力实在有限,因为完全是利用业余时间开发,这次重写耗费了我太多时间,但是我还是花费了很多时间去适配安卓版本,就是想证明 React Native 也可以做出体验很好的安卓应用,目前除了因为阿婆的专利问题 Android 的 ScrollView 不支持 overScroll,其他的效果跟 iOS 上完全一致

3 回复

还是没开源吗?

楼主的最佳实践确实可以开源了。

创意非常棒,兄弟。要不要看个机会,交个朋友也可以。https://cnodejs.org/topic/5fe0776e98427e3c116a9a3c

回到顶部