2022 年了, React Native 和 Flutter、uni-app 怎么选?
gongquanlin
·
2022-02-06
·
via 移动开发
 |
|
33
gongquanlin 2022 年 2 月 7 日
感谢各位朋友的支持回复! rn 和 flutter 这两天我抽空都装上了,简单写了几个 demo ,就目前问题简单说一下我的想法: react natvie:因为我本身也做前端,所以上手很快,有现成的组件库( ant design mobile ),样式也都是 css 的语法,写起来没有啥问题 flutter:因为本身 dart 是新语言,但是语法糖看着还算简单,上手也很快,嵌套的问题在 vscode 里面编辑器会自动加注释,相对来说还好一些,主要的问题是组件不熟悉,样式不熟悉,全都需要重新学,因此写起来可能门槛高一点 flutter 的样式写起来确实不如 css/scss 方便,可能也和个人习惯有关,flutter 本身写样式的方式,个人感觉和 compose 挺像,本质上就是调用函数。 样式写起来不方便,看了一下可能和 flutter 的渲染方式有关,需要先转 element 再转 rederObject 最后渲染 layer 。 不过有失必有得,这样万物基于 widget ,性能上进行优化确实比 css 可能方便一些?个人拙见 我因为只是写了个 hello,world ,目前正在研究两者的路由、网络、样式等功能,然后再给大家个回复吧!
|
 |
|
37
moosoul 2022 年 2 月 26 日 8
UniApp 这个先放弃吧,写小程序还不错,已经用 uniapp 上架了两款小程序(长期运营维护,但是编辑器还是 bug 比较多,主要是跟 HBuilderX 的一个 hot reload 有关,但是不是啥大问题,大不了重新编译一次) Flutter 2.0 已上架两款应用。一款简单,一款复杂。都是社交类应用(三方服务采用的腾讯云的 IM ,现阶段 3.5 版本之后的 IM 的 flutter 插件还不错,以前的很坑) 然后复杂应用中有一款涉及到,IM 、富文本编辑、相机、录音、实时音视频。这个时候就能发现 flutter 的各种坑了。(如果你愿意花时间折腾那可以用) 目前坑点稍微说一下 1. Google Flutter Plugin 中的 Camera 、Video Player 的问题,前者旋转拍照的支持有问题,0.2 版本的 bug 如今 0.9 了还未修复,后者对旋转的视频的方向支持有问题,也是 0.1,0.2 版本的问题现在 2.0 以后了还未解决。 2. 富文本编辑器使用的 flutter quill,这个库还不错基于 flutter 的 skia 那套自己完全重绘,性能和效率还不错,但是功能性上面相对于成熟的富文本编辑器缺失太多,编辑器的基础的输入,换行,样式各种都有不少问题,因目前还比较基础很多 API 封装的不够彻底,经常有需要自己手动修改编辑器的 meta data 的情况 3. Flutter 自身,语言上是 Dart 这个没啥好评价的,多学一门语言而已,大多数程序员都没有压力。但是 UI 构建的方式基于 Widget 的,这个 Widget 看似很完美,当你应用内自定义的内容较多的时候,你就会发现,万物不是 Widget 了,万物都是 Container ,基本组件都是自己基于 Container 去修改。看了很多文章都说 Flutter 通过 Skia 自绘了一套 UI ,保证了 Android 和 iOS 的一致性,真希望这些作者拿 Flutter 去写一个实际项目,这个一致性真的没啥用,大多数都还是需要你自定义(这个时候我就很怀念 React Native 了,反正也可以 div 一把梭啊) 4. 三方插件上,大多数插件也是需要自定义的,我列一下我自定义的 pub 的插件 google_plugins (主要是修改上面说的两个插件的 bug ) flutter_wechat_camera_picker (如上,内部采用的以上两个插件) sliding_up_panel (有一个容器高度的 bug ) ai_barcode (需要自定义扫描线的风格) flutter_quill (需要解决一些编辑 bug ,以及自定义一些 Style ) React Native 0.59 已上架 2 款以上应用。 缺点还是性能问题,但是大多数基础项目,我做了这么多款项目还真没碰到性能说跟 Flutter 差距很多的地方。 再个长时间没接触 React Native 了更多的就不评价了。 以上对比下来 Flutter == ReactNative >>>>>>> UniApp(做 App 用这个你就是坑自己) 我看 RN 更新了 0.69 版本据说在原生交互方便加入了 JNI,可以直接调用原生不像以前是采用类似 json 数据通讯的方式,我准备再回归 RN 试试了。 如果内心不够强大,项目又够复杂真的不建议 Flutter ,需要原生处理的多出你的想想。 其实如果做到复杂项目上,Flutter 和 RN 真的 55 开,都需要你有不错的原生基础。 最后说一下我想回归 RN 的原因 1. JS/TS ,日常是 Nodejs 全栈,也会些一下 React 项目,语言上更熟悉。 2. Flutter 当前主版本还算比较稳定,但是三方库一言难尽,并且样式相关的很多官方自己都没有一套很好的自定义方案,那三方库更不可能支持的有多好,大多数三方库最后为了改一些样式只能拉下来自己改库了。 至于大家最终选用什么样的框架看是看需求吧,考虑性能直接原生,不考虑性能的简单项目除了 uniapp 任选,复杂项目如果本身也是 js/ts 那就 RN
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。