现在的位置: 首页 > 移动开发 > 正文

移动开发最大误区就是认为跨平台开发就可以抛弃原生开发

2019年11月18日 移动开发 ⁄ 共 1385字 ⁄ 字号 评论关闭

  恰逢最近谷歌 IO 大会结束,大会后也在线上线下和大家有过交流,总结了下大家最关系的问题有:

  1、谷歌在 Kotlin-First 的口号下又推广 Dart + Flutter 冲突吗?

  这个问题算是被问得最多的一个,先说观点:我个人认为其实这并不冲突,因为有个 误区就是认为跨平台开发就可以抛弃原生开发!

  如果从事过跨平台开发的同学应该知道,平台提供的功能向来是有限的,而面对产品经理的各种 “点歪技能树” 的需求,很多时候你是需要基于框架外提供支持,常见的就是 混合开发或者原生插件支持 。

  所以这里我表达的是,目前 Kotlin 和 Dart 更多是相辅相成 ,而一旦业务复杂度到一定程度,跨平台框架还可能存在降低工作效率的问题,比如针对新需求,需要重复开发 Android/IOS 的原生插件做支持,这也是 Aribnb 曾经选择放弃 React Native 的原因之一。

  与我而言,跨平台的意义在于解决的是端逻辑的统一 ,至少避免了逻辑重复实现,或者 IOS 和 Android 之间争论 谁对谁错 的问题,甚至可以统一到 web 端等等。

  2、React Native 和 Flutter 之间的对比

  Flutter 作为后来者,难免会被用来和 React Native 进行对比,在这个万物皆是 JS 的时代,Dart 和 Flutter 的出现显得尤为扎眼。

  在设计上它们有着许多相似之处,响应式设计/async支持/setState更新 等等,同时也有着各种的差异,而大家最为关心的,无非 性能、支持、上手难易、稳定性程度 这四方面:

  性能上 Flutter 的确实会比 React Native 好 ,如下图所示,这是由框架底层决定的,当然目前 React Native 也在进行下一代的优化, 而对此最直观的数据就是:GSY系列 在18年用于闲鱼测试下的对比数据了 。

  同时注意不要用模拟器测试性能,特别是IOS模拟器做性能测试,因为 Flutter 在 IOS模拟器中纯 CPU ,而实际设备会是 GPU 硬件加速,同时只在 Release 下对比性能。

  支持上 Flutter 和 React Native , 都存在第三方包质量参差不齐的问题,而目前在这一块 Flutter 是弱于 React Native 的 ,毕竟 React Native 发展已久,虽然版本号一直不到 1.0,但是在 JS 的加持下生态丰富,同时也是因为平台特性的原因,诸如 WebView 、地图等控件的支持上现在依旧不够好,这个后面也会说道。

  上手难易度上,Flutter 配置环境和运行的“成功率”比 React Native 高不少 ,这里面有 node_module 黑洞这个坑,也有 React Native 本身依赖平台控件导致的,至少我曾经试过接手一个 React Native 跑了一天都没跑起来的经历,同时 Flutter 在运行和SDK版本升级的阵痛也会少很多。

  稳定性:Flutter 中大部分异常是不会引起应用崩溃 ,更多会在 Debug 上体现为红色错误堆栈,Release 上 UI 异常等等。

  如果你是前端,我会推荐你先学 React Native,如果你是原生开发,我推荐你学 Flutter 。

  在 React Native 0.59.x 版本开始,React 已经将许多内置控件和库移出主项目,希望模糊 React 和 React Native 的界线,统一开发,这里的理念和 Flutter 很像。

  Flutter 暂时不支持热更新!!!!!!!!

抱歉!评论已关闭.