这两天玩了玩React Native,感觉不错,谁用的久,这东西坑多么?
目前我还遇到太多坑……
目前我还遇到太多坑……
总体来说,iOS上很好,Android 上挺多小问题,简单列几点,没什么条理。
优点: 1. 两个平台样式一致性不错,界面开发省力很多 2. 开发很快,特别是界面,live reload和hot reloading都很好,做像素级UI还原很方便也很快 3. 比 cordova/ionic 之类 hybrid 性能好、更容易整合原生界面 4. 本论坛提倡移民,硅谷用它的应该不少
缺点: 1. 长期稳定维护的组件偏少 2. 包管理和cordova相比太原始 3. Android平台性能不好,红米2以前开发时JS只能4-6帧,现在好很多。但是timer杀伤力很大,不能用长时间的timer,我有个界面2个timer,一个100ms,一个1分钟,界面就卡死了(大概能猜到为啥这么差了,实现上很大缺陷)。用了一个react-native-background-timer库先解决了,体验上还是不够好。 4. 需要做background fetch、推送content-available之类处理的,在JS层限制很多,只适合退到后台还没被杀死的情况,还是需要在native处理 5. Android 平台的 Activity 在 React Native 没有对应的东西,有人封装过但天然不能很好配合,在 iOS 上好点。但几个 Native 来实现的 Navigator 都慢慢停滞了。而用 React Native 这套东西来实现的,某些情况下性能差点,和原生体验也有差异,只能说勉强能接受,如果团队在UI和交互上有自己特点,也能掩盖一下。
总体来说: 1. 个人非常推荐使用,特别适合快速把创意变成产品,大部分时候足够用,少数时候需要自己想办法 2. 各种开源组件库实现一般,熟练点的话很多库用的难受就自己做一个,反而少了很多折腾,比如 https://github.com/kirankalyan5/react-native-segmented-control-tab 这个库,跨平台的 Segmented Control,代码写成屎了,不同的人贡献代码,越改越乱,样式BUG成堆,但是没有另外的库做这个。我自己今天花半小时按他的属性接口写了一个,就可以覆盖主要功能了。 3. React 比 Angular 这套易用多了,state 管理我从没遇到什么意外情况,我用 Ionic 搞了一下,Angular 差多了。 4. 有个库能让 react native 使用 cordova 的组件,我还没测试,如果能用应该多了不少资源,cordova 那种原生库正好兼容这种场景。
先写这么多杂的吧。