老生常谈的技术选型 react native vs flutter ?

323 天前
 murmur

总体需求

1 、办公类应用,企业证书,不需要上市场

2 、有集成 fragment 或者 ios 原生组件的需求(第三方提供的 sdk 和界面)

3 、webview 是核心,因为大多数业务是 cordova 迁移过来的,这部分大概有 100 多个页面,所以重写的大概 20-30 个页面左右

4 、重构只是因为 ios 相机启动 wkwebview 白屏太烦了,核心业务准备重写,这部分还得能转成 h5 复用

5 、安卓、ios 开发都是其他开发兼职

选 flutter 的理由

1 、社区热度更高,有很多国内厂商甚至提供官方插件

2 、界面一致性更好处理

3 、google 背书不容易倒

4 、dart 虚拟机编译的东西比 js bundle 不容易反解

选 react native 的理由

1 、jsx 的语法太舒服了

2 、因为 rn 渲染的都是 native ,所以无论集成 fragment 还是 view 都是手到擒来的事情

3 、rn 的 webview 似乎比 flutter 强一些

4 、rn 的 web 比 flutter 好点

不选 flutter 的理由

1 、语法太 tm 畜生了

2 、官方似乎只提供了集成 view 的说明

不选 rn 的理由

1 、直到新架构还是实验期,正式上的只有新的 js 编译器

2 、插件不支持热加载(热加载插件是实验特性)

3 、如果不优化的话包大的可怕( debug ~50m ,几乎没写什么东西,就路由和一些图标)

大家给点意见?

4681 次点击
所在节点    程序员
34 条回复
moonrailgun
322 天前
如果主要是 webview 的话,我的建议是 rn 。因为我调研下来 flutter 的 webview 不如 rn 的 webview 。(甚至本来还考虑过 uniapp 的 w2a 方案不过正如 op 所说太畜生了)

这是我的项目可供参考, 一些与 webview 通信与相互调用的实践: https://github.com/msgbyte/tailchat/tree/master/client/mobile
xulihang
322 天前
@murmur 拍照用 cordova 的插件也会有杀 wkwebview 的问题吗
murmur
322 天前
@xulihang 有啊。cordova 的插件调用的就是官方相机,有考虑过重写一个简陋的相机专门拍照,但是既然微信小程序都没能解决,那除了受影响的功能拿出 webview 也没什么好办法
n3r0
322 天前
需要 h5 复用和 webview 核心,以及集成原生 view 。你这需求用跨平台真是一点好处没捞到呀……还是用原生吧,部分抽出来改写一下。

另外 2023 年了还有人嫌 flutter 的 UI 写法嵌套丑陋,合着拆分是一点都不愿意做呀,写业务逻辑也不至于一个方法从头到尾吧。要是真有那么恶心就不会发展的这么快了。相比于之前安卓写 XML ,几个群里普遍都觉得是好几倍的效率提升,同样 compose 这些新的声明式 UI 框架也是类似的写法,基本就是未来的趋势了。

虽然 flt 问题也不少,说说多窗口字体渲染编辑器输入法候选框 json 解析大家都认同,老看这些吐槽不到点子上的也是很槽心了。。
murmur
322 天前
@n3r0 这是被迫的,我查了那么多资料,能解决 wkwebview 白屏的问题就只有不用 webview ,连微信和微信小程序都搞不定这个问题

我们的问题比微信小程序还严重点,微信小程序拍照一般就是传个发票发个商品,我们有的页面要求拍照几十张,就算缩图内存占用也很恐怖
murmur
322 天前
@n3r0 业务部分代码用原生写太恐怖了,那种复杂的表格和表单用原生渲染,想想都头大,但是因为这部分业务还得能跑在微信(部分页面),所以还是得找个跨平台非 h5 框架
tool2d
322 天前
flutter 写新项目可以,可老项目那么多页面和代码需要推翻重写,工作量巨大,同事未必愿意。
n3r0
322 天前
@murmur 那就只能原生了。。几十张图稍微处理不好就 OOM 了,RN 不知道,flutter 这个场景感觉还比较薄弱,基本没啥自带优化的,缓存啥的都得自己做。
androidzai
322 天前
webview 是核心推荐 RN 。一来 webview 支持好,二来技术栈也比较相似。
npe
322 天前
ReactNative
成熟度来说会好些,这方面招人成本也低一些。
GTim
322 天前
我,我会写 Flutter 插件,但是我不会写 RN 插件,也是无语了
murmur
322 天前
@GTim 我以前维护过 cordova 的插件,贼简单,rn 的插件我也看不懂,除了一大堆 c 、c++的代码外,还有巨复杂的 gradle 指令
murmur
321 天前
@androidzai 放弃 rn 了,体验太差了,那个 metor 编译器动不动就闪退,开了调试模式之后直接 app 都起不来了,也不知道哪个插件出了兼容问题,直接是 so 报错都不知道哪里改

说是 react 结果一堆 js 库兼容问题
simpleH
256 天前
留个脚印,在接触 flutter ,"语法太 tm 畜生了"😭

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/955166

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX