yuche / gouqi

🐸 枸杞 - 伪装成音乐客户端的计时 App

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Roadmap without any promises

yuche opened this issue · comments

  • View 层的分离和测试。这个是一定会做的,这个项目就是跑测试送 App,没有测试就没意思了。虽然之前写 View 都是怎么快怎么来,但大部分 container 的子组件还是都提前写成了 functional 的样子,所以改起来应该不算麻烦。这里包括两步:
    • 用 Reselect 重写 connect ,之前写 View 层基本就是怎么快怎么来,虽然 chrome profile 和 Xcode 调试显示还没有性能问题,这个我倒是想提前优化一下;
    • 用 Recompose 分离组件,这里尽量就不用 class 来写 component 了(不过这里还有一个 React Native animation 的问题),保证每个组件都是 functional component,这样即便不用 Jest 的 snapshot 测试起来也很方便
  • 用 normalizr 重写数据结构。当时写枸杞的时候 Twitter 还没有发他们新的 mobile 版本,在 Redux devtools 看了一下他们的数据结构发现原来这么搞才更科学。
  • 接入别的音乐 API。这里依赖于前一个 todo。原理就是给每一个音乐源的 API 都写一个 normalizr,因为 saga 测试 AJAX 的 I/O 都做了提前的处理,所以 saga 的测试不用重写。
  • 支持 Android。由于我没有真机也没法做调试,另外听说现在 Android 有了很大进步,现在 2k 到 3k 阶段有什么可以推荐吗?希望对开发者友好。
  • 适配更多机器。目前应该 iPhone 5(s/SE) 和 6(s/7) 两种都没问题,但播放器写死了图片的大小,
  • 音乐的 cached。现在播放音乐使用的是 react-native-video ,在 iOS 上AVFoundation 的简单实现,每次加载音乐都要把整首歌全都下载过来才能播放。另外一个选择是 react-native-sound ,这个也写好了但效果并不比 react-native-video 好。一些支持 cache 的音乐播放实现实际上用的是 StreamKitDOUAudioStreamer ,但他们的 API 还不满足现在枸杞的需求。如果纯用 JavaScript 的话倒是有一个思路:把音乐先 fetch 成 blob,然后用 react-native-fetch-blob 转换成 stream 给 react-native-video 播放,下载完成之后缓存在本地第二次播放的时候就直接播放本地文件。不过具体到底能不能 work 还不清楚。最好还是有原生语言开发者能做这类事。