flutter、rn、uni-app比较

  • flutter => Google
  • uni-app => Dcloud
  • rn => Facebook
  • H5 + 原生(Cordova、Ionic、微信小程序)- webview
  • JavaScript 开发 + 原生渲染 (React Native、Weex)
  • 自绘UI + 原生 (Qt for mobile、Flutter)
  • 自绘UI + 原生能力js化 (uni-app)

webview、react native/weex、flutter,复杂度依次降低,渲染性能依次上升。
webview和weex都内置了,可选择

  1. flutter是界面库,纯排版引擎,绘制文字、按钮、图片等常用界面控件
  2. flutter特点是简单、高性能
  3. flutter使用dart语言,嵌套复杂.(是否可以通过一种预编译的dsl来简化写法 => 从严格转换为松散是简单的,从松散转换为严格几乎是不可能的)
  4. flutter逻辑层与视图层统一,运行在同一套dart虚拟机下,rn、weex的js引擎和原生渲染层是两个运行环境(通信性能折损 – 跟手式的js响应操作绘制帧动画),weex通过预定义规则BindingX解决了
  5. flutter缺少原生能力,涉及原生的界面,一样会产生原生和dart之间的通信,造成性能损耗。
  6. rn、flutter在iOS和Android平台上,使用2套ui库,learn once,write anywhere不是write once,run anywhere
  7. webview、rn/weex可动态载入js代码,flutter不可以(1. 编译优化概念,动态载入影响性能。2. 动态载入有被apple store封杀的风险)
  8. uni-app,它的设计目标不是跨平台排版引擎,而是跨平台应用开发引擎
  9. uni-app的排版部分,可以选择小程序强化webview引擎和weex引擎,可根据自己的需求切换。而能力层面,uni-app提供了htmlplus API、Native.js、插件市场,解决了原生能力js化的问题。
  10. rn: 学习react,要求精通flex布局,要求原生开发协作。
  11. flutter: 学习dart,了解dart和flutter的API、要求精通flex布局,要求原生开发协作。
  12. uni-app: 学习vue,了解小程序,weex已经内嵌到uni-app中
  13. flutter的H5版有浓郁的Material风格
  14. uni-app则可以一套代码,同时编译为iOS、Android、H5、微信小程序、支付宝小程序、百度小程序、头条小程序、QQ小程序。其他2个因架构差异太大做不到

flutter的相对劣势:

  • 需要原生协作,维护3套代码,无法有效降低开发成本,提升开发效率
  • 嵌套地狱,代码难看难维护
  • 不支持热更新
  • 目前质量和成熟度很低,github上的issue有5k+,很容易掉坑里
  • 原生可视控件融合不好,比如webview、video、map
  • ui库不适合国情
  • 学习成本高
  • dart未来扑朔迷离

rn的相对优势:

  • rn的坑虽然比weex的少,但uni-app已经填了weex的很多坑。这方面差别不大。
  • rn的生态虽然比weex丰富。但uni-app是反过来的,uni-app的国内应用生态丰富度超过了rn。
  • rn的app冷启动比uni-app快。这个问题uni-app已经内部改进完毕,下个版本发布就能解决。
  • rn是纯单页的,嵌入原生App比较灵活。而uni-app是应用整体的概念,如果要内嵌入其他原生应用的话,要求原生应用内嵌uni-app应用整体进来
    rn的相对劣势:
  • 需要原生协作,维护3套代码,无法有效降低开发成本,提升开发效率
  • 不支持小程序,发布到h5也无法直接发
  • ui库不适合国情,learn once,write anywhere
  • 学习成本高,用人成本高,不利于开发商降低开发成本
  • rn是纯单页应用,如果一个应用的页面很多,用rn写会很崩溃,变量污染和干扰严重。而weex/uni-app支持多页面,页面之间上下文隔离,写页面较多的大型应用更合适
  • 另外react在中国的市场占有率远不如vue。这也是中国与国外不同的特色情况。

uni-app让开发者真的不用懂原生开发就能做出完整的跨平台应用。遇到极个别的需求,开发者也可以去插件市场找人订做一个原生插件,自己仍然使用js来集成,仍然可以云端直接打包。

某个不涉及原生能力的界面想跨平台 --> flutter
有原生交互的应用 -->uni-app

整理于:https://blog.csdn.net/aaaaaaliang/article/details/100121493

你可能感兴趣的:(笔记,uni-app,flutter,react,native)